Regex ReEX确保模式中不出现特定单词

Regex ReEX确保模式中不出现特定单词,regex,Regex,我有一个正则表达式,它匹配列表中的一系列字符,但我想阻止它匹配单词 我的正则表达式是: ^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$ 我希望它能像这样匹配: widget/JQYHHU-查看小部件,应匹配 widget/jqyhu/-查看小部件,应匹配 widget/jqyhu/bag of screws-查看widget,应匹配 widget/jqyhu/bag of screws/-查看widget,应匹配 widget/add-查看小部件,应不匹配 小部件/a

我有一个正则表达式,它匹配列表中的一系列字符,但我想阻止它匹配单词

我的正则表达式是:

^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$
我希望它能像这样匹配:

  • widget/JQYHHU
    -查看小部件,应匹配
  • widget/jqyhu/
    -查看小部件,应匹配
  • widget/jqyhu/bag of screws
    -查看widget,应匹配
  • widget/jqyhu/bag of screws/
    -查看widget,应匹配
  • widget/add
    -查看小部件,应不匹配
  • 小部件/add/
    -查看小部件,应不匹配
是否可以添加条件以匹配字符,但如果字符拼写为“add”,则不能添加条件

^widget/(?!add)([\w\d~]+)/?(?:[\w\d~]+)/?$
这是一个零宽度的负前瞻断言;基本上,它说“站在我现在所在的位置,确保如果我向前看,我不会看到模式
add
,但完成后不要移动光标位置。”


请在此阅读:

除了add,还有其他不想匹配的词吗?您需要将破折号添加到character类中,然后正则表达式也可以这样简化:
^widget/(?!add)(?:([\w\d~-]+)/?)+$
谢谢您的参考。这个术语有时很难记住。