正则表达式验证手机号码
String phone = "1?????????";
String regexString = "1[3-9][0-9]{9}";//正则表达式
boolean bo = phone.matches(regexString);
固定电话和手机示例:
public static void phonenum() {
Scanner scan = new Scanner(System.in);
String phoneString = "";
String answer = "Y";
Pattern ppPattern = Pattern.compile("0[1-9][0-9]{1,2}[-]?[1-9]\\d{6,7}|0[1-9][0-9]{1,2}\\s?[1-9][0-9]{6,7}|1[356789]\\d{9}");
Matcher mth = null;
boolean bo = false;
do {
bo = false;
System.out.println("请输入电话号码:");
phoneString = scan.nextLine();
// phoneString = scan.next();
mth = ppPattern.matcher(phoneString);
if(mth.matches()) {
System.out.println("电话号码正确!");
System.out.println("您输入的电话号码是:"+phoneString);
}else {
System.out.println("电话号码错误");
System.out.println("您输入的电话号码是:"+phoneString);
System.out.println("是否重新输入?\"Y/N 或者 y/n?\"");
answer = scan.nextLine();
// System.out.println(answer);
if(answer.equalsIgnoreCase("y")) {
bo = true;
}
}
}while(bo);
System.out.println("成功!!!");
scan.close();
}
正则表达式验证IP地址
IPv4地址由4组数字组成,每组数字之间以.分隔,每组数字的取值范围是0~255.
IPv4必须满足以下四条规则:
- 任何一个1位或者两位数字,即0~99;
- 任何一个以1开头的3位数字,即100~199;
- 任何一个以2开头,第二位数字在0~4之间的数字即200~249;
- 任何一个以25开头,第三位数字在0~5之间的三位数字,即250~255;
(?=(\b|\D))(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))(?=(\b|\D))
(?=(\b|\D))(((25[0-5])|(2[0-4]\\d)|(1\\d{2})|([1-9]\\d)|([0-9])).){3}((25[0-5])|(2[0-4]\\d)|(1\\d{2})|([1-9]\\d)|([0-9]))(?=(\b|\D))
第二种写法
/^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/
IPv6的128位地址通常写成8组,每4组为4个十六进制数。
比如:AD80:0000:0000:0000:ABAA:0000:00C2:0002 是一个合法的IPv6地址。这个地址比较长,看起来不方便也不易于书写。零压缩法可以用来缩减其长度。如果几个连续段位的值都是0,那么这些0就可以简单的一::来表示,上述地址就可以写成AD80::ABAA:0000:00C2:0002.这里需要注意的是只能简化连续的段位的0,其前后的0都要保留,比如AD80的最后的这个0,不能被简化。当然也可以在ABAA后面使用::,这样的话前面的12个0就不能压缩了。这个限制的目的是为了能准确的还原被压缩的0,不然就无法确定每个::代表多少个0.
^([\\da-fA-F]{1,4}:){7}([\\da-fA-F]{1,4})$