我在将输入字符串与Regex匹配时遇到问题。我想验证输入数字在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]))"));
答案 0 :(得分:7)
答案 1 :(得分:3)
答案 2 :(得分:1)
使用边界标签确保只匹配(0到255)个数字,我必须提供的优化模式是:
\b(?:1\d{2}|2[0-4]\d|[1-9]?\d|25[0-5])\b
Pattern Demo(在PHP / PCRE中显示步数)
检查从0
到256
的列表时,4010步。
此模式与01
或001
不匹配。 (在一个或多个前导零上不匹配)
考虑:
答案 3 :(得分:0)
boolean valid = IP.matches("(0?[0-9]{1,2}|1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])");
答案 4 :(得分:0)
完成ip inet4匹配:
JS
/(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])/g.exec(myIp);
http://www.webtoolkitonline.com/xml-formatter.html
缩小:
/(1?(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])/g.exec(myIp);
答案 5 :(得分:0)
这适用于以下包含初始零的模式和ip 例如:023.45.12.56
pattern=(\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]);
答案 6 :(得分:0)
如果您需要前导零,请尝试以下操作:
"((\\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])"
满足以下条件:IP地址是" A.B.C.D"形式的字符串,其中A,B,C和D的值可以在0到255之间。允许前导零。 A,B,C或D的长度不能大于3.
也许有人可以帮助进行额外的简化?
答案 7 :(得分:0)
如果您想使用' ip / mask'验证ip4,那么正则表达式如下所示:
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\/([0-9]|[1-2][0-9]|3[0-2]))$
只是ip
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
用于测试它的JS代码
function isMatchByRegexp(stringToValidate, regexp) {
var re = new RegExp(regexp);
return re.test(stringToValidate);
}
答案 8 :(得分:0)
对此进行了测试:
static String pattern = "^(([0-1]?[0-9]?[0-9]?|2[0-4][0-9]|25[0-5])\\.){3}([0-1]?[0-9]?[0-9]?|2[0-4][0-9]|25[0-5]){1}$";
它适用于以下情况:
答案 9 :(得分:0)
请尝试这个
"^(((\d|0\d|00\d|\d{2}|0\d{2}|1\d{2}|2[0-4]\d|2[0-5]{2})\.){3})(\d|0\d|00\d|\d{2}|0\d{2}|1\d{2}|2[0-4]\d|2[0-5]{2})$"
它也可用于前导零
答案 10 :(得分:0)
(2[0-4][0-9])|([0-1]?[0-9]?[0-9])
专门匹配0到249