我想使用Java验证IPv4地址.它应该使用点十进制表示法编写,因此它应该有3个点(" ."),没有字符,点之间的数字,数字应该在有效范围内.应该怎么做?
Nec*_*net 87
使用正则表达式非常简单(但请注意,这比使用Apache Commons Utility的worpet的答案效率低得多且难以阅读)
private static final Pattern PATTERN = Pattern.compile(
"^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
public static boolean validate(final String ip) {
return PATTERN.matcher(ip).matches();
}
Run Code Online (Sandbox Code Playgroud)
wor*_*pet 52
尝试InetAddressValidator实用程序类.
文件在这里:
在这里下载:
http://commons.apache.org/validator/
wil*_*ote 21
使用Guava的InetAddresses.forString()
InetAddresses.isInetAddress(ipStr)
Run Code Online (Sandbox Code Playgroud)
Aka*_*Wal 10
你可以使用这个功能 -
public static boolean validate(final String ip) {
String PATTERN = "^((0|1\\d?\\d?|2[0-4]?\\d?|25[0-5]?|[3-9]\\d?)\\.){3}(0|1\\d?\\d?|2[0-4]?\\d?|25[0-5]?|[3-9]\\d?)$";
return ip.matches(PATTERN);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式,如下所示:
(([0-1]?[0-9]{1,2}\.)|(2[0-4][0-9]\.)|(25[0-5]\.)){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))
Run Code Online (Sandbox Code Playgroud)
这个验证了值在范围内.
Android支持正则表达式.请参见java.util.regex.Pattern.
class ValidateIPV4
{
static private final String IPV4_REGEX = "(([0-1]?[0-9]{1,2}\\.)|(2[0-4][0-9]\\.)|(25[0-5]\\.)){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))";
static private Pattern IPV4_PATTERN = Pattern.compile(IPV4_REGEX);
public static boolean isValidIPV4(final String s)
{
return IPV4_PATTERN.matcher(s).matches();
}
}
Run Code Online (Sandbox Code Playgroud)
为避免反复重新编译模式,最好放置Pattern.compile()调用,使其仅执行一次.
还有一个未记录的实用程序类sun.net.util.IPAddressUtil,您实际上不应该使用它,尽管它可能在快速的一次性丢弃实用程序中很有用:
boolean isIP = IPAddressUtil.isIPv4LiteralAddress(ipAddressString);
Run Code Online (Sandbox Code Playgroud)
在内部,这是实用程序类InetAddress用于解析IP地址.
请注意,对于像"123"这样的字符串,这将返回true,这些字符串在技术上是有效的IPv4地址,而不是点十进制表示法.
| 归档时间: |
|
| 查看次数: |
110720 次 |
| 最近记录: |