Mobile Number Validation in Java

2025年5月7日 | 阅读 5 分钟

每个国家都有自己的手机号码格式。要为每个国家验证手机号码很困难。因此,在本节中,我们将学习如何使用 正则表达式 和 Google 的 libphonenumber API 在 Java 中验证手机号码。在本节中,我们将创建 Java 程序来仅验证印度和美国的号码格式。基于这两个国家,我们可以通过对代码进行一些修改来验证其他国家的手机号码。

美国手机号码格式

印度手机号码格式

如何验证手机号码?

在 Java 中有两种验证手机号码的方法

  • 使用正则表达式
    • 使用 Pattern 类
    • 使用 String.matches() 方法
  • 使用 Google libphonenumber API

使用正则表达式

使用 Pattern 类

Pattern 类属于 java.util.regex 包。它提供 compile() 方法,该方法将给定的正则表达式编译成一个模式。它接受要编译的正则表达式字符串。

语法

该类还提供了 matcher() 方法,该方法创建一个匹配器,该匹配器将根据此模式匹配给定输入。它接受要匹配的字符序列。

语法

我们在以下程序中使用的另一个类是 Matcher 类。它是一个最终类,通过解释 Pattern 来对 字符序列 执行匹配操作。请注意,匹配器是从模式创建的。

该类提供 find() 方法,该方法查找输入序列中与模式匹配的下一个子序列。它从此匹配器的区域开头开始,或者如果在之前的调用方法成功。当且仅当输入序列的子序列匹配此匹配器的模式时,它才返回 true。

该类的 group() 方法返回上一个匹配所匹配的输入子序列。

String 类的 equals(obj) 方法将字符串与指定对象进行比较,并且当且仅当参数不为 null 且为字符串对象时才返回 true。

MobileNumberValidation.java

输出

It is a valid mobile number.

使用 String.matches() 方法

在下面的程序中,我们使用了 Java String 类的 matches() 方法。它告诉字符串是否与正则表达式匹配。

语法

该方法接受一个 String 类型的参数,称为正则表达式,并返回一个 Boolean 值。如果正则表达式语法无效,它将抛出 PatternSyntaxException

MobileNumberValidation1.java

输出

Mobile Number Validation in Java

如果我们采用上述方法,我们需要进行大量的测试工作来覆盖所有情况。但如果我们有一个提供此功能的 API,并且经过了适当的测试,那么将其用于我们的应用程序将会很好。

使用 Google libphonenumber API

libphonenumber 是 Google 提供的一个开源库。它提供了诸如解析、格式化、验证和存储国际电话号码等功能。该库的 Java 版本针对智能手机运行进行了优化,并且自 4.0 版本以来一直被 Android 框架使用。

该 API 支持以下类型的号码

  • 固定电话
  • 固定电话或手机
  • 手机
  • 传呼机
  • 个人号码
  • 高级费率
  • 共享成本
  • 免费电话
  • UAN
  • 未知
  • 语音邮件
  • VOIP

注意:运行程序之前,请确保 libphonenumber-8.12.24.jar 文件已添加到项目中。

在下面的程序中,我们使用了 PhoneNumberUtil 类,它提供了 getInstance()isValidNumber()parse() 方法。

MobileNumberValidation2.java

输出

Mobile Number Validation in Java