Регулярное выражение, чтобы убедиться, что конкретное слово не встречается в середине шаблона
У меня есть регулярное выражение, которое соответствует диапазону символов в списке, но я бы хотел, чтобы оно не совпадало со словом.
Мой Regex это:
^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$
Я хотел бы, чтобы это соответствовало так:
widget/JQYHHU
- Просмотр виджета, должен совпадатьwidget/JQYHHU/
- Просмотр виджета, должен совпадатьwidget/JQYHHU/bag-of-screws
- Просмотр виджета, должен совпадатьwidget/JQYHHU/bag-of-screws/
- Просмотр виджета, должен совпадатьwidget/add
- Виджет видимости, не должен совпадатьwidget/add/
- Виджет видимости, не должен совпадать
Можно ли добавить условие, чтобы оно совпадало с символами, но только если они пишут слово "добавить"?
1 ответ
Решение
^widget/(?!add)([\w\d~]+)/?(?:[\w\d~]+)/?$
Это отрицательное прогнозное утверждение нулевой ширины; в основном это говорит: "Стоя там, где я сейчас нахожусь, убедитесь, что если я смотрю вперед, я не вижу закономерности add
, но не двигайте позицию курсора, когда я закончу."
Читайте об этом здесь: http://www.regular-expressions.info/lookaround.html