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



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

我的正则表达式是:

^widget/([wd~]+)/?(?:[wd~]+)/?$

我希望它像这样匹配:

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

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

^widget/(?!add)([wd~]+)/?(?:[wd~]+)/?$

这是一个零宽度的负前瞻断言;基本上它说"站在我现在的位置,确保如果我向前看,我看不到add的模式,但在完成后不要移动光标位置。

在这里阅读它: http://www.regular-expressions.info/lookaround.html

最新更新