Как использовать регулярное выражение для проверки того, что URL-адрес должен начинаться и заканчиваться ожидаемым шаблоном - PullRequest
1 голос
/ 06 мая 2020

Я хочу проверить, действительно ли URL-адрес соответствует приведенному ниже шаблону.

https://xxx.abc.com/yyy/?&p=1000/1001

Как я могу написать Regex для достижения?

Ожидается :

  1. Начинается с домена 'https://xxx.abc.com', ' xxx ' может быть любым именем поддомена, ' ab c .com 'должно быть фиксированным значением.

  2. Путь / yyy может быть любым путем, даже подпуть должен быть разрешен. https://xxx.abc.com/yyy/?&p=1000 / 1001

  3. ? & P = 1000/1001 должно быть в порядке с ' \? (\ &)? P = \ d + / \ г + '

Ответы [ 4 ]

1 голос
/ 06 мая 2020

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

^(https:\/\/[a-z0-9]+\.abc\.com)(\/.*\?\&?p=\d+\/\d+)$

1 - первая группа начинается с домена https://xxx.abc.com

2 - вторая группа вложенный путь, например /yyy/?&p=1000/1001

Демо здесь

1 голос
/ 06 мая 2020

Поскольку вы не указали никаких ограничений для xxx или yyy, я предполагаю, что они должны соответствовать чему-то разумному, например «1 или более буквенно-цифровых c символов или тире / дефис» или в регулярном выражении: [a-bA-B0-9\-]+ не стесняйтесь настраивать это на что-нибудь еще в регулярном выражении:

^https:\/\/[a-bA-B0-9\-]+\.abc.com/[a-bA-B0-9\-]+\/\?(\&)?p=\d+/\d+$

разбивая его:

  • ^ в начале и $ в end важны, потому что они гарантируют, что регулярное выражение соответствует всей строке, которую вы ему передаете (^ привязывает к началу входной строки, а $ связывает конец) без них, вы можете сопоставить любую строку, содержащую URL-адрес, как substring
  • части [a-bA-B0-9\-]+, как упоминалось выше, соответствуют любой последовательности буквенно-цифровых символов c или -. Обратите внимание, что если вы используете структуру регулярных выражений, которая позволяет запускать регулярные выражения без учета регистра (например, perl / javascript как regex /regex/i или в c# с использованием RegexOptions.IgnoreCase), вы можете безопасно изменить это на [a-b0-9\-]+
  • остальное, я думаю, говорит само за себя ...
1 голос
/ 06 мая 2020

Попробуйте вот так: ^https:\/\/\w+\.abc\.com\/[\w\/-]+\?\&?p=\d+\/\d+$

Демо здесь

1 голос
/ 06 мая 2020

/https:\/\/[a-z0-9]+\.abc\.com\/.*\?(\&)?p=\d+\/\d+/i

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