2016-08-29 4 views
1

В настоящее время есть правило регулярного выраженияRegex для URL Перенаправления

^/connect\??(.*) 

Целью этого было захватить URL-адреса с /подключить или /подключить? Независимо. У меня теперь проблема, когда /connecticut попадает в плен, но я не хочу этого. Некоторое время я играл, но наличие параметра запроса в URL-адресе отключает меня, чтобы заставить его работать. У кого-нибудь есть предложения, чтобы/connecticut не был захвачен, а два других?

ответ

1

Вы можете использовать дополнительную группу вокруг \?.* и сделать ? обязательно в нем и добавить конец строки $ якоря:

^\/connect(?:\?.*)?$ 

См детализирует regex demo

Pattern:

  • ^ - начало работы stri нг
  • \/connect - буквальные подстроки /connect
  • (?:\?.*)? - дополнительная группа, которая соответствует 1 или 0 последовательности:
    • \? - буквальный ? символа
    • .* - ноль или больше символов, отличной от символа новой строки, как можно дольше ...
  • $ - конец строки.
+0

При тестировании регулярного выражения на многострочную строку в онлайн-тестировщиках регулярных выражений, а не на отдельных строках, вы должны использовать модификаторы 'g' и' m'. –

+0

Это прекрасно работает. Благодарим вас за пробой. Теперь это выглядит так просто. Я никогда раньше не использовал группу, не связанную с захватом, поэтому этот пример действительно помогает. – lshaffer

+0

Рад, что это сработало для вас. Пожалуйста, также подумайте над тем, чтобы мой ответ оказался полезным для вас (см. [Как повысить уровень переполнения стека?] (Http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)) , –

Смежные вопросы