Javascript正则表达式匹配逗号,当它不应该

use*_*450 1 javascript regex firefox google-chrome

我无法弄清楚这个javascript在Firefox 7.0.1和谷歌Chrome 14.0.835.202中发生的奇怪之处(我还没有测试过任何其他版本).为什么除了加号(),破折号()和句点()之外还/[+-.]/g匹配逗号()?,+-.

// Firebug
>>> "Hello, World++--..".match(/[+-.]/g);
[",", "+", "+", "-", "-", ".", "."]
>>> "Hello, World".match(/[+-.]/g);
[","]

// Chrome Developer Tools:
> "Hello, World++--..".match(/[+-.]/g);
  [",", "+", "+", "-", "-", ".", "."]
> "Hello, World".match(/[+-.]/g);
  [","]
Run Code Online (Sandbox Code Playgroud)

好吧,也许我需要逃避这段时间(.)

// Firebug
>>> "Hello, World!".match(/[+-\.]/g);
[","]

// Chrome Developer Tools
> "Hello, World!".match(/[+-\.]/g);
  [","]
Run Code Online (Sandbox Code Playgroud)

不.但是如果我改变了plus(+)和dash(-)的顺序,它就会停止匹配逗号(,).

// Firebug
>>> "Hello, World".match(/[-+.]/g);
null

// Chrome Developer Tools
> "Hello, World".match(/[-+.]/g);
  null
Run Code Online (Sandbox Code Playgroud)

这对我来说毫无意义.Firefox和Chrome都会分享同样的正则表达式错误,这似乎很奇怪.有谁知道这是为什么?

Jen*_*rat 10

使用[+\-.].

- 掩盖范围,必须逃脱.