正则表达式与特定字符串不匹配

时间:2009-12-10 15:10:15

标签: regex

我的用例如下:我想找到所有与此/name.action类似的内容,但最后一部分不是.action,例如:

  • name.actoin - 应匹配
  • name.action - 不应该匹配
  • nameaction - 不应匹配

我有这个:
/\w+.\w*
匹配用点分隔的两个单词,但我不知道如何添加'和不匹配的.action'。

5 个答案:

答案 0 :(得分:7)

首先,您需要转义.字符,因为它在Regex中被视为any character

其次,您需要添加Match if suffix is not present组 - 由(?!)语法表示。

您可能还想要使用抑扬符^来表示新行的开头,并将*(任何重复)更改为+(一个或多个重复)。

^/\w+\.(?!action)\w+是完成的正则表达式。

答案 1 :(得分:2)

^\w+\.(?!action)\w*

答案 2 :(得分:0)

你需要转义点字符。

答案 3 :(得分:0)

\w+\.(?!action).*

请注意尾随.*不确定操作文本后您要执行的操作。

另见Regular expression to match string not containing a word?

答案 4 :(得分:0)

您需要使用zero-width negative lookahead assertion。这将让你向前看字符串,并根据单词的否定进行匹配。

所以你需要的正则表达式(包括转义的。字符)看起来像是:

/name\.(?!action)/