正则表达式 - 匹配除+之外的任何字符,空字符串也应匹配

时间:2011-11-18 21:26:07

标签: javascript regex

我在JavaScript中使用的正则表达式的一部分遇到了一些麻烦。我需要一种方法来匹配除+字符以外的任何字符,空字符串也应匹配。

[^+]几乎是我想要的,除了它与空字符串不匹配。我尝试[^+]*思考:“+以外的任何字符,零次或多次”,但这与包括+在内的所有内容相匹配。

3 个答案:

答案 0 :(得分:27)

  • [^+]表示“匹配任何不是+”的单个字符
  • [^+]*表示“匹配任意数量的不是+的字符” - 这几乎看起来像我想要的那样,除非它会匹配零个字符(如果是第一个字符)(甚至所有人物都是+

使用锚点确保表达式验证整个字符串:

^[^+]*$

表示:

^       # assert at the beginning of the string
[^+]*   # any character that is not '+', zero or more times
$       # assert at the end of the string

答案 1 :(得分:24)

为它添加{0,1},使其只匹配零次或一次,不多也不少:

[^+]{0,1}

或者,正如FailedDev指出的那样,?也有效:

[^+]?

正如所料,使用Chrome的JavaScript控制台进行测试显示与"+"不匹配,但与其他字符匹配:

x = "+"
y = "A"

x.match(/[^+]{0,1}/)
[""]

y.match(/[^+]{0,1}/)
["A"]

x.match(/[^+]?/)
[""]

y.match(/[^+]?/)
["A"]

答案 2 :(得分:5)

如果您只是测试字符串以查看它是否包含+,那么您应该使用:

^[^+]*$

仅当ENTIRE字符串没有+时才会匹配。