【问题标题】:Android: Validate Phone Number Length by COUNTRYAndroid:按国家/地区验证电话号码长度
【发布时间】:2021-03-24 20:22:42
【问题描述】:

我们如何按国家/地区验证手机号码的长度? (知道国家代码可能是也可能不是数字的一部分)

长度可能因国家/地区而异,这意味着应该有一个长度范围或模式验证器。

例子:

  • +1 222 2222 222(13位)有效✔️
  • 222 2222 222(12位)仅在对应的Locale中选择有效✔️
  • +1 222 2222 2222222(17位)无效❌
  • +1 222 2222(8 位)无效 ❌

注意:我在哪里可以找到每个国家/地区的手机号码长度范围。

谢谢!

【问题讨论】:

  • 你检查过这个吗? stackoverflow.com/questions/37765271/…
  • 你好@DarShan 我需要检查任何手机号码,如果它的长度在每个国家的范围内。因此,我可能需要一个列表,其中包含所有具有预期 calid 长度的国家/地区。 P.S.:出于安全原因,我不能使用库。
  • 该链接将您重定向到 SO 上的完整示例,它不是库。

标签: android validation phone-number telephony mobile-country-code


【解决方案1】:

给定手机号码和国家代码,您可以使用libphonenumeer,这是一个用于验证电话号码的 Google 库;它检查数字长度,如果不是正确的数字,则捕获 NumberParseException 异常。

这是他们如何使用它的示例

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());
}

【讨论】:

  • 你好@Zain,所以如果输入是 swissNumberStr="044 668 1" 例如,抛出异常?我尝试解析一个较短(无效)的数字,但没有抛出异常。我需要 phoneUtil.parse("044 688 1","CH");抛出异常。谢谢!
【解决方案2】:

添加到@Zain 的答案。

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
//  This will check if the phone number is real and it's length is valid.
  boolean isPossible = phoneUtil.isPossibleNumber(swissNumberProto);
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-14
    • 2021-10-03
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多