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

时间:2012-04-28 13:30:49

标签: regex

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

我的正则表达式是:

^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$

我希望它像这样匹配:

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

是否可以添加一个条件以匹配字符,但是如果它们拼写单词“add”,则不是吗?

1 个答案:

答案 0 :(得分:8)

^widget/(?!add)([\w\d~]+)/?(?:[\w\d~]+)/?$

这是零宽度负前瞻断言;基本上它说“站在我现在的位置,确保如果我期待我看到模式add,但是当我完成时不要移动光标位置。”

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