限制中间带小数的数字

时间:2016-12-02 14:44:47

标签: java regex

我正在尝试验证中间带小数的数字是否在0-255范围内,允许前导零。

到目前为止,我已经提出了正则表达式

^0*([1-9][\.\d]|250)*

我尝试过的例子是63.32.32.250然而它只抓取了63,而不是其余的字符串。

我认为[\。\ d]会包含所有期间,但事实并非如此。

我在这里做错了什么?感谢

3 个答案:

答案 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])$

这将捕获四组。