Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   поиск ссылок на странице (https://javascript.ru/forum/project/23691-poisk-ssylok-na-stranice.html)

Gozar 02.12.2011 15:58

Цитата:

Сообщение от devote (Сообщение 140377)
а что плохого в том что знак вопроса попал в ссылку?

Тоже почему у тебя будут все ссылки кривыми, которые заканчиваются на запятые и точки и восклицательные знаки или их тоже пользователю запретить ставить?

devote 02.12.2011 16:02

[quote=Gozar]зы: ты экранируешь точку в символьном классе:
Цитата:

Сообщение от devote (Сообщение 140366)
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки1[^\.]
а зачем?

что бы в имене домена обязалова был хоть одна точка... для этого я читаю все до точки... потом ставлю обязалово точку... и дальнейшее имя домена... тоесть если не указать, то рега примет такую ссылку: http://testdomen/blabla/ за ссылку, что не может быть таковым... ибо в ссылке обязан быть домен первого уровня.


Цитата:

Сообщение от Gozar
Тоже почему у тебя будут все ссылки кривыми, которые заканчиваются на запятые и точки и восклицательные знаки или их тоже пользователю запретить ставить?

Нет конечно, просто пользователь когда копирует и вставляет ссылку, должен понимать что после нее должен идти пробел... глупо писать зразу же как поставил ссылку.

Gozar 02.12.2011 16:11

Цитата:

Сообщение от devote (Сообщение 140380)
что бы в имене домена обязалова был хоть одна точка...

Я не спрашиваю для чего ты это делаешь, я спрашиваю только про экранирование точки. Внутри символьного класса точка является тем чем она является - точкой. Зачем её экранировать?

Цитата:

Сообщение от devote (Сообщение 140380)
должен понимать что после нее должен идти пробел... глупо писать зразу же как поставил ссылку.

Почему глупо? Запятую тоже глупо ставить? По правилам русского языка вроде ставится запятая без пробела. Ты же по крайней мере ставишь без пробела запятую.

devote 02.12.2011 16:14

вот для примера есть гугловская ссылка:

мой:
var a = 'http://translate.google.ru/?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=en&tl=ru&text=Possibly+another+solution+would+be+to+have+the+description+text+hidden+by+default+and+only+shows+when+the+title+is+focused%2Fhovered+over.%0D%0A%0D%0A+Here%27s+an+example%3A+http%3A%2F%2Fwww.1true.co.uk%2Ffastscroll.html&file=#en|ru|Mistletoe'.match( /(?:^|[\s]+)((http(s)?:\/\/)|(www\.))([^\.]+)\.([^\s]+)/i );alert(a);


вот как примет ее твоя рега, в ней же и точки и куча борохла:
var a = 'http://translate.google.ru/?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=en&tl=ru&text=Possibly+another+solution+would+be+to+have+the+description+text+hidden+by+default+and+only+shows+when+the+title+is+focused%2Fhovered+over.%0D%0A%0D%0A+Here%27s+an+example%3A+http%3A%2F%2Fwww.1true.co.uk%2Ffastscroll.html&file=#en|ru|Mistletoe'.match(/(http(s)?:\/\/)?(www\.)?([-.a-z0-9]+)\.(ru|com|net){1}((\/)+[-$_.,+=:;/?@&#%a-z0-9]+)?(\/|\b)/ig);alert(a);

devote 02.12.2011 16:15

Цитата:

Сообщение от Gozar
Я не спрашиваю для чего ты это делаешь, я спрашиваю только про экранирование точки. Внутри символьного класса точка является тем чем она является - точкой. Зачем её экранировать?

привычка =))) хуже то от этого не становиться)))

Gozar 02.12.2011 16:51

Цитата:

Сообщение от devote (Сообщение 140383)
вот как примет ее твоя рега, в ней же и точки и куча борохла:

добавил один символ в регу, теперь она умеет и такие ссылки распознавать, однако в твоей запятые в конце продолжают попадают в выборку.

var a='http://translate.google.ru/?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=en&tl=ru&text=Possibly+another+solution+would+be+to+have+the+description+text+hidden+by+default+and+only+shows+when+the+title+is+focused%2Fhovered+over.%0D%0A%0D%0A+Here%27s+an+example%3A+http%3A%2F%2Fwww.1true.co.uk%2Ffastscroll.html&file=#en|ru|Mistletoe,'.match(/(http(s)?:\/\/)?(www\.)?([-.a-z0-9]+)\.(ru|com|net){1}((\/)+[-$_.,+=:;/|?@&#%a-z0-9]+)?(\/|\b)/ig);
alert(a);

Gozar 02.12.2011 17:00

Оговорюсь, что я не ставлю цель доказать что моя рега лучше или хуже. Только сравнительные характеристики, виды урлов и их контекст и выбор наиболее оптимального варианта.

devote 02.12.2011 17:02

Цитата:

однако в твоей запятые в конце продолжают попадают в выборку.
ну дык этон не проблема засунуть в регу один символ запятой:
var a = 'http://translate.google.ru/?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=en&tl=ru&text=Possibly+another+solution+would+be+to+have+the+description+text+hidden+by+default+and+only+shows+when+the+title+is+focused%2Fhovered+over.%0D%0A%0D%0A+Here%27s+an+example%3A+http%3A%2F%2Fwww.1true.co.uk%2Ffastscroll.html&file=#en|ru|Mistletoe,'.
match( /(?:^|[\s]+)((http(s)?:\/\/)|(www\.))([^\.]+)\.(?:[^\s,]+)/ig );
alert(a);

devote 02.12.2011 17:03

Цитата:

Сообщение от Gozar
Оговорюсь, что я не ставлю цель доказать что моя рега лучше или хуже. Только сравнительные характеристики, виды урлов и их контекст и выбор наиболее оптимального варианта.

Вот это и проблема, что для каждого случая свои плюсы и минусы в любой реге... Поэтому тут как правило пишется от конкретных требований. Я не хочу например считать ссылкой просто надпись google.ru ты же наоборот хочешь это воспринимать как ссылку... и т.д.

Gozar 02.12.2011 17:12

Цитата:

Сообщение от devote (Сообщение 140410)
Я не хочу например считать ссылкой просто надпись google.ru ты же наоборот хочешь это воспринимать как ссылку.

Здесь я с тобой не соглашусь потому, что интуитивно понятно, что это адрес в интернете.


Часовой пояс GMT +3, время: 08:57.