【发布时间】:2010-05-06 07:34:40
【问题描述】:
/[0-9]+/ 也会匹配那些超出范围的,比如999
如何编写一个与0~255 之间的数字完全匹配的正则表达式?
【问题讨论】:
-
带或不带前导零?,即001等
/[0-9]+/ 也会匹配那些超出范围的,比如999
如何编写一个与0~255 之间的数字完全匹配的正则表达式?
【问题讨论】:
我愿意:
$n >= 0 && $n <= 255
正则表达式很好,但在这种情况下可以避免使用。
【讨论】:
看看here:
000..255: ^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
0 or 000..255: ^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$
【讨论】:
最简单的解决方案是获取数字,转换为整数,然后测试它的值是否为 真的,真的想要一个正则表达式这样做,那么这将起作用:
^([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])$
编辑已修复,因为它并非在所有情况下都有效。老实说,这就是为什么您应该将字符串解析为整数并测试整数值是否为
【讨论】:
第一组匹配 0-99,第二组匹配 100-199,第三组匹配 200-249,第四组匹配 250-255
/[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]/
【讨论】:
实际上,您应该只匹配 0-999 并在之后对值进行归一化,但是...
/(25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([0-9][0-9])|([0-9]))/
【讨论】: