正则表达式确保特定单词不会出现在模式的中间

Ech*_*lon 1 regex

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

我的正则表达式是:

^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$
Run Code Online (Sandbox Code Playgroud)

我希望它像这样匹配:

  • widget/JQYHHU - 视图小部件,应该匹配
  • widget/JQYHHU/ - 视图小部件,应该匹配
  • widget/JQYHHU/bag-of-screws - 视图小部件,应该匹配
  • widget/JQYHHU/bag-of-screws/ - 视图小部件,应该匹配
  • widget/add-查看部件,应该匹配
  • widget/add/-查看部件,应该匹配

是否可以添加条件以匹配字符,但是如果它们拼写单词"add"则不能?

Phr*_*ogz 8

^widget/(?!add)([\w\d~]+)/?(?:[\w\d~]+)/?$
Run Code Online (Sandbox Code Playgroud)

这是一个零宽度的负前瞻断言 ; 基本上它说:"站在我在哪里,现在,确保如果我期待我没有看到这个模式add,但是当我做不移动光标位置."

请在此处阅读:http://www.regular-expressions.info/lookaround.html