如何在Java中使用正则表达式验证 IP 地址
给定一个 IP 地址,任务是在正则表达式的帮助下验证这个 IP 地址。
IP 地址是一个格式为“ABCD”的字符串,其中 A、B、C 和 D 的取值范围为 0 到 255。允许使用前导零。 A、B、C 或 D 的长度不能大于 3。
例子:
Input: str = "000.12.12.034"
Output: True
Input: str = "000.12.234.23.23"
Output: False
Input: str = "121.234.12.12"
Output: True
Input: str = "I.Am.not.an.ip"
Output: False
方法:
在本文中,IP 地址是在正则表达式或正则表达式的帮助下验证的。以下是使用正则表达式解决此问题的步骤:
- 获取字符串。
- 验证 IP 地址的正则表达式:
// ReGex to numbers from 0 to 255
zeroTo255 -> (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5])
// ReGex to validate complete IP address
IPAddress -> zeroTo255 + "\\." + zeroTo255
+ "\\." + zeroTo255
+ "\\." + zeroTo255;
- 在哪里:
- \d 表示正则表达式中的数字,与 [0-9] 相同
- \\d{1, 2} 捕获任何一位或两位数字
- (0|1)\\d{2} 捕获以 0 或 1 开头的任何三位数字。
- 2[0-4]\\d 捕获 200 到 249 之间的数字。
- 25[0-5] 捕获 250 到 255 之间的数字。
- 将字符串与正则表达式匹配。在Java中,这可以使用 Pattern.matcher() 来完成。
- 如果字符串与给定的正则表达式匹配,则返回 true,否则返回 false。
下面是上述方法的实现:
Java
// Java program to validate an IP address
// using Regular Expression or ReGex
import java.util.regex.*;
class IPAddressValidation {
// Function to validate the IPs address.
public static boolean isValidIPAddress(String ip)
{
// Regex for digit from 0 to 255.
String zeroTo255
= "(\\d{1,2}|(0|1)\\"
+ "d{2}|2[0-4]\\d|25[0-5])";
// Regex for a digit from 0 to 255 and
// followed by a dot, repeat 4 times.
// this is the regex to validate an IP address.
String regex
= zeroTo255 + "\\."
+ zeroTo255 + "\\."
+ zeroTo255 + "\\."
+ zeroTo255;
// Compile the ReGex
Pattern p = Pattern.compile(regex);
// If the IP address is empty
// return false
if (ip == null) {
return false;
}
// Pattern class contains matcher() method
// to find matching between given IP address
// and regular expression.
Matcher m = p.matcher(ip);
// Return if the IP address
// matched the ReGex
return m.matches();
}
// Driver code
public static void main(String args[])
{
// Checking for True case.
// Test Case: 1
System.out.println("Test Case 1:");
String str1 = "000.12.12.034";
System.out.println("Input: " + str1);
System.out.println(
"Output: "
+ isValidIPAddress(str1));
// Test Case: 2
System.out.println("\nTest Case 2:");
String str2 = "121.234.12.12";
System.out.println("Input: " + str2);
System.out.println(
"Output: "
+ isValidIPAddress(str2));
// Checking for False case.
// Test Case: 3
System.out.println("\nTest Case 3:");
String str3 = "000.12.234.23.23";
System.out.println("Input: " + str3);
System.out.println(
"Output: "
+ isValidIPAddress(str3));
// Test Case: 4
System.out.println("\nTest Case 4:");
String str4 = "I.Am.not.an.ip";
System.out.println("Input: " + str4);
System.out.println(
"Output: "
+ isValidIPAddress(str4));
}
}
输出:
Test Case 1:
Input: 000.12.12.034
Output: true
Test Case 2:
Input: 121.234.12.12
Output: true
Test Case 3:
Input: 000.12.234.23.23
Output: false
Test Case 4:
Input: I.Am.not.an.ip
Output: false