Мне нужен RegEx, используемый в JavaScript для соответствия некоторым правилам URL:
- Должен начинаться с
http
, https
, ftp
, ftps
или mailto:
(обязательно) www
необязательно a-z
, A-Z
, 0-9
и некоторые специальные символы .:-/
разрешены
Поскольку яЯ не очень знаком с RegEx. Я пытался использовать это, найденное в ответе (второй ответ @foufos): Что такое хорошее регулярное выражение для соответствия URL?
/^(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9/]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9/]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9/]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})
Теперь этоRegEx соответствует всем нужным ссылкам, кроме двух: например, http://intranet/index.html
mailto:sample@sample.com
Поэтому я попытался изменить его и добавил правило mailto:
:
/^((http(s)?)|(ftp(s)?):\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,}|(mailto:){1}([\w\.]+)\@{1}[\w]+\.[\w]{2,})\s$/gm;
На данный момент двавсе не работает:
Это url
соответствует: www.google.com
, но не должно, так как должно начинаться с http
, https
, ftp
,ftps
или mailto:
(обязательно).Я просто поставил ?
после (s)
, поэтому только это должно быть необязательным.Почему это не работает?
Это url
все еще не соответствует: http://intranet/index.html
но я подумал, у меня есть правильное правило для специальных символов .:-/
.
ТЕСТИРОВАНИЕ: Список URL
, который должен совпадать:
Список URL
не должен совпадать: -www.google.com
Любые входы?