Регулярное выражение в JS: Как сопоставить строку, начинающуюся с «api», с исключениями - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужно сопоставить все строки, которые начинаются с /api/v, за исключением тех, которые заканчиваются на /user/logout.

Пример:

  • / api / v2 / сегментов ( match)

  • / api / v2 / user (match)

  • / api / v2 / user / logout (NO match)

Я пытаюсь использовать это регулярное выражение, но оно не работает

/.*\/api\/v.*(^\/user\/logout)$/

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете использовать

/^\/api\/v(?!.*\/user\/logout$).*/

См. Демоверсию regex

Подробности

  • ^ - начало строки
  • \/api\/v - /api/v строка
  • (?!.*\/user\/logout$) - (отрицательный взгляд) нет символов 0+, кроме символов разрыва строки, следует как можно больше символов с /user/logout в конце строки разрешено сразу же справа от текущего местоположения
  • .* - любые 0+ символов, кроме символов перевода строки, как можно больше.

Вам не нужно .* в конце, если вы просто проверяете строку с RegExp#test на совпадение. Если вы хотите использовать значение соответствия, вам нужно .* в конце.

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