我在编写匹配有效IPv6地址的正则表达式时遇到问题,包括压缩形式的那些(::从每个字节对中省略或前导零).
有人可以建议一个符合要求的正则表达式吗?
我正在考虑扩展每个字节对,并将结果与更简单的正则表达式进行匹配.
public class InetAddresTest {
public static void main(String ... agrs) {
try {
InetAddress inet = InetAddress.getByName("1.2");
System.out.println("Good ip address");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,InetAddress产生的ip地址回复为"1.0.0.2".我无法从InetAddress的javadoc中找到合理的答案.你能解释一下这种行为吗?
我有以下简单的代码片段,用于检测给定的IPv4地址确实只有数值(即在剥离点后):
import edu.gcc.processing.exceptions.net.IPAddressNumericException;
//Get the IP address
String address = "239.255.255.255";
//Check to see if this is a number
try {
String IPNumbers = address.replace(".", "");
Integer.parseInt(IPNumbers);
} catch (NumberFormatException e) {
System.out.print(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,NumberFormatException被解雇了,我得到这个错误:
For input string: "239255255255"
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解这个吗?该parseInt()方法适用于较小的数字,例如127001.
感谢您的时间.