Регулярное выражение Javascript, совпадающее только с полным URL-адресом при наборе текста - PullRequest
1 голос
/ 20 мая 2010

Я пытаюсь использовать javascript, чтобы найти все URL-адреса в текстовой области, когда человек печатает (onkeyup). Проблема в том, что я нахожу регулярное выражение, которое соответствует всему URL, мне нужно только, чтобы оно совпадало со всеми URL в текстовой области, которые являются полными URL.

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

Мне нужно найти регулярное выражение, которое будет сопоставлять и возвращать массив всех URL-адресов в текстовой области, но также не совпадать, если человек не завершил ввод полного URL-адреса. Надеюсь, это имеет смысл!

Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 мая 2010

Комментарий Дэвида верен.

Как вы могли определить, что http://www.domain.com/whatever был полным URL, а http://www.domain.com/what - нет? Или http://www.domain.com завершено, а http://www.domain.co нет? (Там есть настоящий сайт).

Вы можете запретить имена хостов без . in, но тогда почему http://to не должен быть действительным? (Там есть настоящий сайт.) Не говоря уже о http://テスト.

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

0 голосов
/ 20 мая 2010

В итоге я использовал этот шаблон:

   var pattern = /((https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(\s|\.\s|\,\s|\n|\r|\n\r)/ig;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...