【发布时间】:2015-07-28 18:13:22
【问题描述】:
我在将输入字符串与正则表达式匹配时遇到问题。我想验证输入数字是否在 0-255 之间,长度最多应为 3 个字符。代码工作正常,但是当我输入 000000 到任何长度时显示的是 true 而不是 false。
这是我的代码:-
String IP = "000000000000000";
System.out.println(IP.matches("(0*(?:[0-9][0-9]?|[0-2][0-5][0-5]))"));
【问题讨论】:
-
为什么要使用正则表达式?
-
如果你需要前导零,试试这个:
"((\\d{1,2}|[01]\\d{1,2}|[0-2][0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|[01]\\d{1,2}|[0-2][0-4]\\d|25[0-5])" -
为什么要执行大约 1 兆字节的正则表达式代码,而不是简单地转换为二进制然后一个比较运算符?
-
一个人最终需要像这样定义正则表达式,因为一个人正在使用其他人关于如何实现 IP 过滤器的疯狂想法。我在看着你,Micronaut 安全!