我在JavaScript中使用的正则表达式的一部分遇到了一些麻烦。我需要一种方法来匹配除+
字符以外的任何字符,空字符串也应匹配。
[^+]
几乎是我想要的,除了它与空字符串不匹配。我尝试[^+]*
思考:“+
以外的任何字符,零次或多次”,但这与包括+
在内的所有内容相匹配。
答案 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字符串没有+
时才会匹配。