我对用于JavaScript的正则表达式的一部分有点麻烦。我需要一种方法来匹配除+
字符以外的任何字符,空字符串也应该匹配。正则表达式 - 匹配除+之外的任何字符,空字符串也应该匹配
[^+]
几乎是我想要的,但它不匹配空字符串。我试过[^+]*
想:“除+
以外的任何字符,零次或多次”,但是这匹配包括+
在内的所有内容。
我对用于JavaScript的正则表达式的一部分有点麻烦。我需要一种方法来匹配除+
字符以外的任何字符,空字符串也应该匹配。正则表达式 - 匹配除+之外的任何字符,空字符串也应该匹配
[^+]
几乎是我想要的,但它不匹配空字符串。我试过[^+]*
想:“除+
以外的任何字符,零次或多次”,但是这匹配包括+
在内的所有内容。
添加{0,1}它,因此它只会匹配0或者1次,不多不少:
[^+]{0,1}
或者,如FailedDev指出,?
工程太:
[^+]?
正如预期的那样,随着Chrome的JavaScript控制台测试表明敌不过"+"
但并匹配其它字符:
x = "+"
y = "A"
x.match(/[^+]{0,1}/)
[""]
y.match(/[^+]{0,1}/)
["A"]
x.match(/[^+]?/)
[""]
y.match(/[^+]?/)
["A"]
[^+]
意味着“匹配任何单个字符不是+
”[^+]*
的意思是“匹配不是+
任何数目的字符” - 这似乎像什么,我想你想,只是它将匹配如果第一个字符(或者甚至是所有字符)都是+
,则为零字符。使用锚,以确保表达式验证整个字符串:
^[^+]*$
表示:
^ # assert at the beginning of the string
[^+]* # any character that is not '+', zero or more times
$ # assert at the end of the string
怎么可能是'[^ +] *'匹配'+ '?这没有意义。你的表情一定有其他错误。 –
@ScottRippey:我猜测(在我的回答中)'*'量词允许匹配成功通过匹配任何东西(零个字符不是'+')成功。在没有锚或其他断言的情况下,理论上它可以在'+'之前或之后匹配,从而允许整个字符串匹配。 (当然这会匹配之前的,因为这是第一个,它会在那里停止)这个评估对你没有意义吗? –