正则表达式中使用 - 的一个小坑
目标:匹配数字字母和-_空格制表符加号,长度 0-70。
一开始的写法[0-9a-zA-z_ \t-+]
结果发现 $&等符号都可以匹配。
研究后发现,正则解析引擎在这种情况下把-当作了范围符号,\t-+匹配了 ascii 码 20 到 43 之间的所有字符,所以 $(ascii 码 36)和 &(ascii 码 38)都可以有效匹配。
正确的写法有两种:
将-放在正则的最前面或者最后面:[0-9a-zA-z_ \t+-]
使用转义符:[0-9a-zA-z_ \t\-+]
版权声明: 本文为 InfoQ 作者【agnostic】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce21abbe813509b8acb65d71f】。文章转载请联系作者。
评论