@电话号码、正则判断
电话号码的正则判断
##题目:写一个输入输出程序,输入手机号码,进行正则判断,如果符合则输出该电话号码,如果不符合则输出
“电话号码格式有误,请重新输入!”注意,直到输入正确格式的电话号码才可以结束程序。
##代码:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @ClassName 正则判断电话号码
* @Description TODO
* @Author 今夕河西
* @Date 2022/7/3 22:40
* @Version 1.0
**/
public class Phone_Judge {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入电话号码:");
String phone_number = scanner.next();
while(!IsMobilphone(phone_number)) {
System.out.print("电话号码格式有误,请重新输入:");
phone_number = scanner.next();
}
System.out.println(phone_number);
}
//判断手机号是否符合规定
private static boolean IsMobilphone(String num) {
//regex1解释:
// 0\d{2,3}:表示0开头的三位或四位数字
//[-]?:表示有一个-或者零个-
//\d{7,8}:表示七位或八位数字:和上面的三位和四位对应:3-8;4-7
// |:表示或者
//\s?:表示空格
String regex1="0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}";
//regex2比较常见,不解释了
String regex2="1[3-9][0-9]\\d{8}";
//注:regex1和regex2分别代表了两种电话号码的格式
//定义Pattern对象
Pattern pattern1=Pattern.compile(regex1);
Pattern pattern2=Pattern.compile(regex2);
//匹配对象
Matcher matcher1=pattern1.matcher(num);
Matcher matcher2=pattern2.matcher(num);
//bool函数判断输入是否正确
boolean boo1=matcher1.matches(); //尝试将整个区域与模式匹配。
boolean boo2=matcher2.matches();
if (boo1) { //符合第一种电话格式
return true;
} else if (boo2) { //符合第二种电话格式
return true;
} else { //都不符合
return false;
}
}
}
运行结果: