Java正则表达式匹配手机号码

在开发中,经常会遇到需要验证手机号码的需求。而使用正则表达式是一种常用的方法来判断一个字符串是否符合特定的模式。本文将介绍如何使用Java的matches方法和正则表达式来判断手机号码的合法性。

正则表达式

手机号码的格式是有一定规律的,常见的格式如下:

  • 11位数字,以1开头,例如:13812345678
  • 13、14、15、16、17、18、19开头的11位数字,例如:15912345678

我们可以使用以下正则表达式来判断手机号码的合法性:

String regex = "^1[3456789]\\d{9}$";
  • ^ 表示字符串的开始
  • 1 表示以1开头
  • [3456789] 表示第二位可以是3、4、5、6、7、8、9中的任意一个数字
  • \\d{9} 表示后面是9个数字
  • $ 表示字符串的结束

使用matches方法判断手机号码

Java中的matches方法是String类提供的一个用于判断字符串是否匹配某个正则表达式的方法。它返回一个boolean值,如果匹配,则返回true,否则返回false。

下面是一个使用matches方法判断手机号码合法性的示例代码:

public boolean isValidPhoneNumber(String phoneNumber) {
    String regex = "^1[3456789]\\d{9}$";
    return phoneNumber.matches(regex);
}

在上面的例子中,isValidPhoneNumber方法接收一个字符串类型的手机号码作为参数,然后使用matches方法来判断手机号码是否匹配指定的正则表达式。

示例

下面是一个完整的示例,展示了如何验证手机号码:

public class PhoneNumberValidator {
    public static void main(String[] args) {
        String phoneNumber = "13812345678";
        boolean isValid = isValidPhoneNumber(phoneNumber);
        if (isValid) {
            System.out.println("手机号码合法");
        } else {
            System.out.println("手机号码不合法");
        }
    }

    public static boolean isValidPhoneNumber(String phoneNumber) {
        String regex = "^1[3456789]\\d{9}$";
        return phoneNumber.matches(regex);
    }
}

在上面的示例中,我们先初始化一个手机号码13812345678,然后调用isValidPhoneNumber方法来判断该手机号码是否合法。最后根据返回值输出相应的结果。

序列图

下面是一个使用matches方法判断手机号码合法性的序列图:

sequenceDiagram
    participant 用户
    participant 程序
    用户->>程序: 输入手机号码
    Note left of 程序: 调用isValidPhoneNumber方法
    程序->>程序: 判断手机号码是否合法
    程序->>用户: 返回结果

序列图展示了用户输入手机号码,然后程序调用isValidPhoneNumber方法判断手机号码的合法性,并返回结果给用户。

总结

本文介绍了如何使用Java的matches方法和正则表达式来判断手机号码的合法性。通过使用正则表达式,我们可以非常方便地验证用户输入的手机号码是否合法。在实际开发中,我们可以根据需要自定义验证规则,从而适应各种不同的业务需求。希望本文能够帮助大家更好地理解和使用Java的正则表达式。