Javascript regex matching comma when it's not supposed to
我想不出在火狐7.0.1和谷歌Chrome14.0.835.202中出现的这个javascript小怪事(我还没有测试过其他版本)。为什么除了加号(
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。有人知道这是为什么吗?
使用
利用
1 2 3 4 | + U+002B , U+002C - U+002D . U+002E |
这是匹配的3个人都包括你还有的是只是一confusing符合。你是在回答你的问题…………………移动的
1 | /[-+.]/g |
alternatively,你不能逃避的
1 | /[+\-.]/g |