用正则表达式提取单词,除非它是给定单词

时间:2019-01-19 04:26:34

标签: javascript regex

我试图用正则表达式匹配并提取URL的一部分,除非它是给定的单词。

以下是一些已经可以使用的测试数据:

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

不起作用:

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

这是我当前使用的正则表达式:

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

我可以按自己的意愿工作,除非它包含“ a”或“ d”而不是整个“ add”一词。

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

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

RegEx Demo

在正则表达式中,当您使用[^\/(add)]+时,表示除/之外的任何字符。 (ad)个字符,因为在字符类即[...]中没有分组。

答案 1 :(得分:-1)

如果您希望匹配“ / api / * / whatever”并返回为*找到的内容,除非它是“ add”

Replicate