Нужна помощь в написании регулярного выражения

#.net #regex #url-rewriting

Вопрос:

Может ли кто-нибудь помочь мне в написании регулярного выражения, соответствующего такой строке

Правила таковы:

  1. Все должно начинаться с nl
  2. Он может или не может иметь один параметр между nl и контактом (например, /abc/), но не ( /abc/def/).
  3. Он может иметь все что угодно после контакта

Примеры:

nl/abc/контакты —> разрешено

nl/контакт —> разрешено

nl/abc/def/контакт —> не допускается

nl/abc/контакт/mno —> разрешено

nl/abc/contactmno/ —> не допускается

Я попытался написать один («^nl(.?)/контакт(.)$»), но у него проблема в том, что он допускает любое количество косых черт между nl и контактом, поэтому мне просто нужна не более одной косой черты между ними

Ответ №1:

Я бы использовал:

 ^nl(?:/[^/] )?/contact(?:/[^/] )*$
 


ДЕМОНСТРАЦИЯ

Этот шаблон говорит, что он соответствует:

 ^            from the start of the path
nl           starts with "nl"
(?:/[^/] )?  any zero or one path parameter following
/contact     /contact
(?:/[^/] )*  followed by zero or more other path parameters
$            end of the input