Регулярное выражение для браузера URL - PullRequest
2 голосов
/ 24 мая 2010

Я новичок в JavaScript

мне нужно регулярное выражение, которое

допускает обе эти формы

, например:

  1. http://www.google.com
  2. www.google.com

Ответы [ 4 ]

1 голос
/ 24 мая 2010
var url_pattern = new RegExp("((ftp|http|https)(:\/\/))?([a-zA-Z0-9]+[.]{1}){2}[a-zA-z0-9]+(\/{1}[a-zA-Z0-9]+)*\/?", "i");

return url_pattern.test(url);
0 голосов
/ 09 июня 2016

^((?:(?:https?|ftp):)?\/\/?)?(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$

Проверьте это! https://regex101.com/r/qQ8uV6/1

Извлечено из В поисках идеального регулярного выражения для проверки правильности URL https://mathiasbynens.be/demo/url-regex (немного его изменил).

кредитов на @diegoperini.

Если вы протестируете его в JavaScript, вы получите

ParseError: Ошибка синтаксического анализа регулярного выражения: недопустимое регулярное выражение

....

Диапазон не в порядке в классе символов

Необходимо заменить\x{xxxx} для \uxxxx.Таким образом, в JavaScript это будет:

^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\ufff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$

Так же, как указано в Регулярное выражение JavaScript Unicode - диапазон вне порядка в классе символов

0 голосов
/ 23 ноября 2011

Я только что написал сообщение в блоге о распознавании URL в наиболее используемых форматах, таких как:

www.google.com http://www.google.com mailto:somebody@google.com somebody@google.com www.url-with-querystring.com/?url=has-querystring

Используется регулярное выражение /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/, однако я бы порекомендовал вам перейти к http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the, чтобы увидеть полный рабочий пример вместе с объяснением регулярного выражения на случай, если вам нужно его расширить или настроить.

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

(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?

Это работает довольно хорошо.

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