18 javascript regex
[^a]是指除了a我们知道之外的任何字符,但是[^](没有后续字符)是什么意思?就像-在这样的情况下失去其字符范围的含义一样[-],我认为这[^]将与插入符号相匹配.我花了太长时间来调试这个问题,但却发现至少在Chrome 19中看起来它似乎匹配任何东西 - 换句话说,相当于..这里是否有适用的规范或预期的行为是什么?
是的,我知道我可以而且可能应该使用[\^].这个问题更多的是病态的好奇心.
sle*_*han 30
根据JavaScript规范(ES3和ES5),[^]匹配任何单个的代码单元,同为[\s\S],[\0-\uffff],(.|\s)(不要使用;不像其它的,它依赖于回溯)等从该差.是,没有按点"吨匹配的四个换行代码点(\r,\n,\u2028,和\u2029).
我不建议使用[^]或[],因为它们不能一致地跨浏览器工作,并且它们阻止您的正则表达式使用其他编程语言.IE <= 8且旧版本的Safari对空字符类使用传统(非JavaScript)正则表达式行为.较早版本的Opera会反转正确的JavaScript行为,因此[]匹配任何代码单元并且[^]永远不会匹配.传统的正则表达式行为是将]字符类中未处理的前导字符视为文字字符,而不是结束字符类.
如果您使用XRegExp库,[]并且[^]正确且一致地跨浏览器工作.XRegExp还添加了s(也称为dotall或singleline)标志,使得点匹配任何代码单元(与[^]正确遵循JavaScript规范的浏览器相同).
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |