欢迎访问宙启技术站
智能推送

Java函数怎样验证用户输入的手机号是否合法?

发布时间:2023-05-27 22:30:21

手机号是用户与其他人沟通的重要工具之一,如今越来越多的人通过手机进行通讯,在开发移动应用或网站的时候,经常需要对用户输入的手机号进行有效性验证。在Java中,可以使用正则表达式来验证用户输入的手机号是否合法。接下来,本文将详细介绍Java函数如何验证用户输入的手机号是否合法。

1. 判断手机号长度是否合法

首先,我们需要判断用户输入的手机号长度是否符合规范。根据我国现行的手机号码规则,手机号码长度为11位。因此,我们可以定义一个函数checkLength(),用于判断用户输入的手机号码长度是否为11位。

代码示例:

/**
 * 验证手机号长度是否合法
 * @param phoneNumber 手机号码
 * @return 是否合法
 */
public static boolean checkLength(String phoneNumber) {
  if (phoneNumber.length() != 11) {
    return false;
  }
  return true;
}

2. 判断手机号格式是否合法

除了判断手机号码长度是否合法以外,还需要判断手机号码的格式是否合法。 中国各移动运营商的号码分配规则可以参考这个表格。

我们可以使用正则表达式来判断手机号码是否符合正确的格式。正则表达式如下:

"^1[3|4|5|6|7|8|9][0-9]\\d{8}$"

其中,^表示字符串的开头,$表示字符串的结尾。[]表示可选字符。其中1代表国家代码,3-9为手机号段,\\d{8}表示后面有8个数字。

我们定义一个函数checkFormat(),用于判断用户输入的手机号码格式是否合法。函数代码如下:

/**
 * 验证手机号格式是否合法
 * @param phoneNumber 手机号码
 * @return 是否合法
 */
public static boolean checkFormat(String phoneNumber) {
  String regex = "^1[3|4|5|6|7|8|9][0-9]\\d{8}$";
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(phoneNumber);
  return matcher.matches();
}

3. 验证手机号前三位是否合法

在我国当前的手机号段规则中,前三位代表手机运营商,因此我们可以根据前三位判断当前手机号码是否属于国内支持的运营商。

中国移动号码段:134、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198

中国联通号码段:130、131、132、145、155、156、166、175、176、185、186

中国电信号码段:133、149、153、173、177、180、181、189、199

我们可以定义一个函数checkCarrier(),用于判断用户输入的手机号码运营商是否合法。函数代码如下:

/**
 * 验证手机号前三位是否合法
 * @param phoneNumber 手机号码
 * @return 是否合法
 */
public static boolean checkCarrier(String phoneNumber) {
  String prefix = phoneNumber.substring(0, 3);
  if (prefix.equals("134") || prefix.equals("135") || prefix.equals("136") || prefix.equals("137") || prefix.equals("138")
      || prefix.equals("139") || prefix.equals("147") || prefix.equals("150") || prefix.equals("151") || prefix.equals("152")
      || prefix.equals("157") || prefix.equals("158") || prefix.equals("159") || prefix.equals("178") || prefix.equals("182")
      || prefix.equals("183") || prefix.equals("184") || prefix.equals("187") || prefix.equals("188") || prefix.equals("198")) {
    return true;
  }
  if (prefix.equals("130") || prefix.equals("131") || prefix.equals("132") || prefix.equals("145") || prefix.equals("155")
      || prefix.equals("156") || prefix.equals("166") || prefix.equals("175") || prefix.equals("176") || prefix.equals("185")
      || prefix.equals("186")) {
    return true;
  }
  if (prefix.equals("133") || prefix.equals("149") || prefix.equals("153") || prefix.equals("173") || prefix.equals("177")
      || prefix.equals("180") || prefix.equals("181") || prefix.equals("189") || prefix.equals("199")) {
    return true;
  }
  return false;
}

4. 验证手机号的合法性

综合上述的验证函数,我们可以定义一个最终的函数checkPhoneNumber(),用于判断用户输入的手机号码是否合法。函数代码如下:

/**
 * 验证手机号是否合法
 * @param phoneNumber 手机号码
 * @return 是否合法
 */
public static boolean checkPhoneNumber(String phoneNumber) {
  if (!checkLength(phoneNumber)) {
    return false;
  }
  if (!checkFormat(phoneNumber)) {
    return false;
  }
  if (!checkCarrier(phoneNumber)) {
    return false;
  }
  return true;
}

该函数将先调用checkLength()函数,检查手机号长度是否为11位;然后调用checkFormat()函数,检查手机号格式是否正确;最后调用checkCarrier()函数,检查手机号前三位是否属于有效的手机号段。如果所有条件都满足,返回true,否则返回false。

5. 测试函数

我们可以编写一个测试函数,用于测试checkPhoneNumber()函数是否能够正确地判断用户输入的手机号是否合法。测试函数代码如下:

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

将手机号设置为13812345678,运行测试函数,输出结果为“手机号合法”,说明checkPhoneNumber()函数能够正确地判断用户输入的手机号是否合法。

总结

本文介绍了如何使用Java函数验证用户输入的手机号是否合法,主要包括判断手机号长度是否合法、判断手机号格式是否合法、判断手机号前三位是否合法和验证手机号的合法性。代码简单易懂,读者可以根据自己的需要进行修改和扩充。在实际开发中,我们可以针对不同的业务需求,灵活运用这些函数来验证用户输入的手机号是否合法。