我正在尝试验证中间带小数的数字是否在0-255范围内,允许前导零。
到目前为止,我已经提出了正则表达式
^0*([1-9][\.\d]|250)*
我尝试过的例子是63.32.32.250然而它只抓取了63,而不是其余的字符串。
我认为[\。\ d]会包含所有期间,但事实并非如此。
我在这里做错了什么?感谢
答案 0 :(得分:2)
使用正则表达式不是一个好主意,您可以像这样使用InetAddressValidator:
InetAddressValidator.getInstance().isValid(YOUR_IP_HERE)
顺便说一下,您也可以使用isValidInet4Address
方法。
答案 1 :(得分:1)
Federico Piazza的答案更好但是如果你想手动完成,我会考虑使用分割功能并使用>&lt ;,例如......
进行检查String[] numbers = "63.32.32.250".split("\\.");
for(String number: numbers){
-> parse number string to an int
-> check its in right range just with ><=
}
希望有所帮助
答案 2 :(得分:0)
对于一组数字:
^0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
对于四组,重复:
^0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
这将捕获四组。