我希望匹配除以下单词之外的所有单词:
1) any-random-word
2) any-random-word/
3) any-random-word/123
4) any-random-word/abcdef
以便可以匹配类似的单词。
1) any-random-word123
2) any-random-word(any non-word character other than '/')123
2) any-random-wordabcdef
4) any-random-word(any non-word character other than '/')abcdef
事实上任何数字或任何字都可以在' any-random-word /'之后出现。
我试过
^(?!any-random-word(\/?)(\w+)$|any-random-word$)
但它逃避了所有包含任意随机词的单词。
感谢。
答案 0 :(得分:1)
您可以稍微更改当前的正则表达式:
^(?!.*\bany-random-word\b)
如果您想要实际匹配某些内容,请在结尾处添加.+
:
^(?!.*\bany-random-word\b).+
\b
(单词边界)确保您不想匹配的单词周围没有其他\w
个字符。
编辑:根据您的进一步澄清,我建议使用此正则表达式:
^(?!.*\bany-random-word(?:/|$)).+
正则表达式的主要部分是否定前瞻:(?!.*\bany-random-word(?:/|$))
。如果内部匹配,则会导致整场比赛失败。
.*\bany-random-word(?:/|$)
会在字符串末尾匹配any-random-word
,或者跟/
后面的字符串中的any-random-word/
匹配。
因此,如果您有any-random-word
,它将匹配,并导致整个匹配失败。如果您的字符串以{{1}}结尾,则整个匹配将失败。