验证手机号的Java实现

1. 实现流程

下面是实现验证手机号的流程:

步骤 描述
输入手机号 用户在程序中输入手机号码
格式检查 检查手机号是否符合特定的格式要求
验证手机号 使用正则表达式对手机号进行验证
输出结果 根据验证结果输出相应的提示信息

2. 代码实现

1. 格式检查

首先,我们需要对输入的手机号进行格式检查,确保输入的手机号满足特定的格式要求。以下是一个示例的Java代码:

public static boolean checkFormat(String phoneNumber) {
    String regex = "^1[3-9]\\d{9}$";
    if (phoneNumber.matches(regex)) {
        return true;
    } else {
        return false;
    }
}

代码解析:

  • checkFormat 方法用于检查手机号的格式是否符合要求。
  • String regex = "^1[3-9]\\d{9}$"; 定义了一个正则表达式,该正则表达式表示手机号的格式要求。这个正则表达式要求手机号以1开头,并且后面跟着3-9之间的数字,再接着是任意9位数字。
  • if (phoneNumber.matches(regex)) 使用 matches 方法对手机号进行匹配,如果匹配成功,则返回 true,表示手机号格式正确;如果匹配失败,则返回 false,表示手机号格式不正确。

2. 验证手机号

接下来,我们需要使用正则表达式验证手机号是否合法。以下是一个示例的Java代码:

public static boolean validatePhoneNumber(String phoneNumber) {
    String regex = "^1[3-9]\\d{9}$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(phoneNumber);
    return matcher.matches();
}

代码解析:

  • validatePhoneNumber 方法用于验证手机号是否合法。
  • String regex = "^1[3-9]\\d{9}$"; 定义了一个正则表达式,该正则表达式表示手机号的格式要求,与格式检查部分相同。
  • Pattern pattern = Pattern.compile(regex); 使用 Pattern 类的 compile 方法将正则表达式编译为一个模式。
  • Matcher matcher = pattern.matcher(phoneNumber); 使用 Matcher 类的 matcher 方法,将手机号作为输入,创建一个匹配器。
  • matcher.matches() 使用匹配器的 matches 方法进行匹配,如果匹配成功,则返回 true,表示手机号合法;如果匹配失败,则返回 false,表示手机号不合法。

3. 完整代码示例

下面是一个完整的示例代码,包括格式检查和手机号验证的方法:

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneNumberValidator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入手机号:");
        String phoneNumber = scanner.nextLine();
        
        if (checkFormat(phoneNumber)) {
            System.out.println("手机号格式正确!");
            if (validatePhoneNumber(phoneNumber)) {
                System.out.println("手机号合法!");
            } else {
                System.out.println("手机号不合法!");
            }
        } else {
            System.out.println("手机号格式不正确!");
        }
    }
    
    public static boolean checkFormat(String phoneNumber) {
        String regex = "^1[3-9]\\d{9}$";
        if (phoneNumber.matches(regex)) {
            return true;
        } else {
            return false;
        }
    }
    
    public static boolean validatePhoneNumber(String phoneNumber) {
        String regex = "^1[3-9]\\d{9}$";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(phoneNumber);
        return matcher.matches();
    }
}

3. 类图

下面是一个简单的类图,展示了代码中的主要类和它们之间的关系:

classDiagram
    class PhoneNumberValidator {
        +main(String[] args)
        +checkFormat(String phoneNumber): boolean
        +validatePhoneNumber(String phoneNumber): boolean
    }

4. 甘特图

下面是一个简单的甘特图,展示了代码中的主要步骤和它们之间的顺序关系:

gantt
    title 验证手机号的流程
    dateFormat  YYYY-MM-DD
    section 输入手机号
    输入手机号   :2022-01-01, 1d
    section 格式检查