不应该匹配逗号的javascript regex

Javascript regex matching comma when it's not supposed to

我想不出在火狐7.0.1和谷歌Chrome14.0.835.202中出现的这个javascript小怪事(我还没有测试过其他版本)。为什么除了加号(+、短划线(-和句点(.外,/[+-.]/g与逗号(,匹配)?

1
2
3
4
5
6
7
8
9
10
11
// Firebug
>>>"Hello, World++--..".match(/[+-.]/g);
[",","+","+","-","-",".","."]
>>>"Hello, World".match(/[+-.]/g);
[","]

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

好吧,那么也许我需要逃离这段时期(.)

1
2
3
4
5
6
7
// Firebug
>>>"Hello, World!".match(/[+-\.]/g);
[","]

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

不。但是如果我改变加号(+和破折号(-的顺序),它就不再匹配逗号(,)。

1
2
3
4
5
6
7
// Firebug
>>>"Hello, World".match(/[-+.]/g);
null

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

这对我来说毫无意义。奇怪的是,火狐和Chrome会共享同一个regex bug。有人知道这是为什么吗?


使用[+\-.]。。。。。。。 </P >

-面具的一个范围内的和必须escaped。。。。。。。 </P >


利用-在广场brackets之间的两个人物的其他比赛的全范围内的人物之间的那些人物,含税。所以,+U+002B.U+002E。。。。。。。所有的人物在这范围将包括: </P >

1
2
3
4
+ U+002B
, U+002C
- U+002D
. U+002E

这是匹配的3个人都包括你还有的是只是一confusing符合。你是在回答你的问题…………………移动的-是第一个字符在广场brackets: </P >

1
/[-+.]/g

alternatively,你不能逃避的-: </P >

1
/[+\-.]/g