译者:明明如月
软件攻城狮
审校:
蓝色漂流瓶
不知道你啥感受,反正我感觉正则表达式有些难。除了一些非常简单的以外,我经常需要去查参考书。
昨天我一个大学同学需要一个正则表达式来过滤谷歌分析的数据。需要获取数字大于1200的那部分数据。
为了方便你以后也想找类似的正则表达式,我就写了这篇文章,你可以根据你的需求参考本文的内容。
大于1200的正则表达式
我用一个工具【1】来检测这个正则表达式是否正确。
下面给出该工具对此正则表达式的分析:
^[1-9][2-9](?!00$)[0-9][1-9]?\d+$/
^ 字符串的开头
[1-9] 匹配下面数字中的单个字符
1-9 1到9之间的单个字符
[2-9] 匹配下面数字中的单个字符
2-9 2到9之间的单个字符
(?!00$) 负向预查 - 断言下面的正则不匹配(前两位不能为00)
00 匹配 00两个字符
$ 断言字符串结尾
[0-9] 匹配下面数字中的单个字符
0-9 0到9之间的单个字符
[1-9]? 匹配下面数字中的单个字符
问号: ? 表示出现0次或者一次, 有时候也表示贪婪匹配[greedy]
1-9 表示1到9之间的单个字符
\d+ 匹配数字等价于 [0-9]
数量词: + 1次以上, 贪婪匹配 [greedy]
$ 断言字符串结尾
总结
此正则表达式的关键是(?!00$),它保证了匹配前两位后不会以两个0结尾。如果不这样1200也会匹配,这就不符合“大于”了。
不管怎样,我希望某天本文能给帮到一些人。那我来说6个月之后当我再次遇到需要类似正则表达式的时候都忘记了。
英文来源:http://www.codeshare.co.uk/blog/regular-expression-regex-for-a-number-greater-than-1200/
译者注:
【1】一个工具:https://regex101.com/r/pL8wV7/1 这个网站:https://regex101.com 非常好,不仅可以对正则表达式进行测试,还会给出错误提示以及对正则表达式进行解释等。
【2】正则表达式基本用法
【3】其他超好的参考网站:http://www.runoob.com/regexp/regexp-syntax.html
【本文已经获得原作者翻译许可,转载请注明出处】
英文:http://www.codeshare.co.uk/blog/regular-expression-regex-for-a-number-greater-than-1200/