Извлеките слово с помощью регулярного выражения, кроме случаев, когда это заданное слово - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь сопоставить и извлечь часть URL с помощью регулярного выражения, за исключением случаев, когда это заданное слово.

Вот некоторые тестовые данные, которые уже работают:

/api/add             --> no match
/api/add/view        --> no match
/api/user1           --> matches and extracts "user1"
/api/user1/profile/  --> matches and extracts "user1"

Неworking:

/api/aaa/profile/  --> matches and extracts "aaa"

Вот текущее регулярное выражение, которое у меня есть:

/^\/api\/(?:([^\/(add)]+?))\/.*?$/i

Я работаю так, как хочу, за исключением случаев, когда он содержит «a» или «d» вместо всего «add»."слово.

Ответы [ 2 ]

0 голосов
/ 19 января 2019

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

/^\/api\/(?!add(?:\/|$))([^\/]+)/i

Демонстрация RegEx

В вашем регулярном выражении при использовании [^\/(add)]+ это означает любой символ, кроме любого из /.(, a, d, ) символов, поскольку внутри класса символов, т.е. [...], нет группировки.

0 голосов
/ 19 января 2019

Если вы ищете совпадение с "/ api / * / чем угодно" и возвращаете то, что было найдено для *, если не указано "add"

/^\/api\/(?!add\b)(\w+)(?:\/\w+)*\/?$/i 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...