Заполните регулярное выражение для сопоставления URL с номером порта - PullRequest
1 голос
/ 13 марта 2020

Мне нужно это регулярное выражение:

(https?:\/\/(?:w{1,3}.)?[^\s]*?(?:\.[a-z]+)+)(?![^<]*?(?:<\/\w+>|\/?>))

, чтобы соответствовать этому шаблону http://localhost: 3000 или любой URL с номером порта.

Ссылка на рубляр https://rubular.com/r/tkCOv181H2KJtU

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

В шаблоне нужно отметить несколько вещей.

Вы должны экранировать точку, чтобы буквально соответствовать ей в этой части (?:w{1,3}\.)?

Если вы добавите точку к персонажу класс [^\s.]* вам не нужно делать это не жадным квантификатором.

Вы можете опустить внешнюю группу захвата, если хотите только совпадение.

Вы можете сделать часть порта необязательной. (?::\d+)? для соответствия:

https?:\/\/(?:w{1,3}\.)?[^\s.]+(?:\.[a-z]+)*(?::\d+)?(?![^<]*(?:<\/\w+>|\/?>))

Regex demo

0 голосов
/ 24 марта 2020

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

https?:\/\/(?:w{1,3}\.)?[^\s.]+(?:\.[a-z]+)*(?::\d+)?((?:\/\w+)|(?:-\w+))*\/?(?![^<]*(?:<\/\w+>|\/?>))

Это выражение включает в себя следующие символы в URL:

  • ' / '
  • ' - '
  • ' _ '

https://rubular.com/r/7BjXQP6vaA7hvM

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