使用正则表达式验证输入字符串是否为0-255之间的数字

use*_*598 6 java regex

我在输入字符串与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]))"));
Run Code Online (Sandbox Code Playgroud)

小智 9

测试了这个:

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}$";
Run Code Online (Sandbox Code Playgroud)

它适用于以下情况:

  • IP 地址 xxx.xxx.xxx.xxx / xx.xx.xx.xx / xxxx / 这些的混合。
  • 允许前导零。
  • 范围 0-255 / 最多 3 个数字。


anu*_*ava 7

你可以使用这个正则表达式:

boolean valid = IP.matches("\\b(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\\b");
Run Code Online (Sandbox Code Playgroud)

RegEx演示


Sal*_*n A 5

您可以使用匹配"0", "1", ... 的模式"255"

"([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
Run Code Online (Sandbox Code Playgroud)

在 Ideone 上演示