Исключить mySite из детектора URL с помощью регулярных выражений - PullRequest
0 голосов
/ 30 января 2019

У меня есть это регулярное выражение (в javascript) для обнаружения любого URL, но не содержит «mysite» (он же «пример», потому что фильтр stackoverflow) в домене.

(?<protocol>\w+s?:\/\/)?(?<subdomain>\w+\.)(?<domain>(?!example)(\w+))(?<tls>\.\w{2,4})(?<querystring>\/.*)?\S*

  • ? Протокол для обнаружения протокола URL (http, https, ftp и т. Д. *
  • ? Субдомен для обнаружения любого субдомена
  • ? Домен для обнаружения любого домена (здесьгде я хочу исключить mysite)
  • ? tls для обнаружения .com, .org и т. д. *
  • ? строка запроса для обнаружения остальной части URL

Примеры:

No detected
https://www.example.org/hello?
http://www.example.org/hello
https://blog.example.org/hello? 
example.org
www.example.org

Detected
www.example.org
www.www.example.org
example.org

Вы можете увидеть это регулярное выражение и примеры для регулярного выражения здесь 101

1 Ответ

0 голосов
/ 30 января 2019

Как обсуждалось с вами, нужно было позаботиться о нескольких вещах.Упоминая некоторые из них ниже,

  • Группе уровня домена требовалось *, поскольку вы хотели разрешить ее ноль или более раз.
  • Чтобы ее запретить, необходимо было заключить ее в границу словачастичное совпадение в тексте.
  • .* в конце регулярного выражения необходимо было заменить на \S*, чтобы избежать совпадения с любым пробелом в URL

С этими изменениями вашобновленное и работающее регулярное выражение становится таким,

\b(?<protocol>\w+s?:\/\/)?(?<subdomain>\w+\.)*(?<domain>(?!mysite)(\w+))(?<tls>\.\w{2,4})(?<querystring>\/\S*)?\b

Демо

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