任务概述
本任务旨在通过Java程序接收一个包含数字和字母的字符串,并判断该字符串中的数字部分是否为中国大陆地区的有效手机号码。根据中国大陆地区的主要电信运营商,手机号码的前几位数字具有特定的模式,具体如下:
- 中国电信:133、149、153、173、177、180、181、189
- 中国联通:130、131、132、145、155、156、166、175、176、185、186
- 中国移动:134、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188
代码实现
/*
任务:接收一个特定格式的字符串,判断其中的数字部分是否为有效的手机号码。
字符串格式:数字@字母(例如:34343@sdeff)。
正则表达式策略:手机号码的前三位必须符合上述号段,后八位为任意数字。
*/
import java.util.Scanner;
public class PhoneNumberValidator {
public static void main(String[] args) {
// 接收用户输入的字符串
Scanner scanner = new Scanner(System.in);
String inputStr = scanner.nextLine();
// 使用'@'分割字符串
String[] parts = inputStr.split("@");
String numberPart = parts[0];
// 验证数字部分是否为有效的手机号码
if (isValidPhoneNumber(numberPart)) {
System.out.println(numberPart + " 是有效的手机号码");
} else {
System.out.println(numberPart + " 不是有效的手机号码");
}
}
private static boolean isValidPhoneNumber(String phoneNumber) {
// 定义正则表达式
String regex = "^(13[0-9]|14[579]|15[0-35-9]|166|17[35-8]|18[0-9])\d{8}$";
return phoneNumber.matches(regex);
}
}
以上代码首先通过标准输入接收一个字符串,然后使用'@'字符将字符串分为两部分,其中第一部分为需要验证的数字。接下来,通过调用isValidPhoneNumber
方法来验证这部分数字是否符合中国大陆的手机号码格式。该方法内部定义了一个正则表达式,用于匹配符合要求的手机号码格式。