我无法弄清楚 Firefox 7.0.1 和 Google Chrome 14.0.835.202 中出现的这个 javascript 小问题(我没有测试过任何其他版本)。为什么 /[+-.]/g
除了匹配加号 (+
)、破折号 ( -
) 和句点 (.
)?
// Firebug
>>> "Hello, World++--..".match(/[+-.]/g);
[",", "+", "+", "-", "-", ".", "."]
>>> "Hello, World".match(/[+-.]/g);
[","]
// Chrome Developer Tools:
> "Hello, World++--..".match(/[+-.]/g);
[",", "+", "+", "-", "-", ".", "."]
> "Hello, World".match(/[+-.]/g);
[","]
好吧,也许我需要转义句点 (.
)
// Firebug
>>> "Hello, World!".match(/[+-\.]/g);
[","]
// Chrome Developer Tools
> "Hello, World!".match(/[+-\.]/g);
[","]
没有。但是,如果我更改加号 (+
) 和破折号 (-
) 的顺序,它就会停止匹配逗号 (,
)。
// Firebug
>>> "Hello, World".match(/[-+.]/g);
null
// Chrome Developer Tools
> "Hello, World".match(/[-+.]/g);
null
这对我来说毫无意义。 Firefox 和 Chrome 共享相同的正则表达式错误似乎很奇怪。有谁知道这是为什么?
最佳答案
使用[+\-.]
。
-
屏蔽一个范围并且必须转义。
关于Javascript 正则表达式在不应该的情况下匹配逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894442/