【问题标题】:How do I update my phone number validation function to validate only US phone numbers?如何更新我的电话号码验证功能以仅验证美国电话号码?
【发布时间】:2019-04-05 15:18:28
【问题描述】:

我有一个通用的电话号码验证功能,目前可以验证所有全球电话号码。我想对其进行更新,使其仅验证美国电话号码。但目前的问题是,即使我将电话号码长度设置为 10,它也会在正好 10 个字符处停止。我的用户可能会输入诸如空格或 ( 之类的内容,例如:“(444)444 4444,如果我将字符数限制为 10,即使它是有效数字,它也不起作用。有什么想法吗?这里是我的功能:

public static boolean isValidPhoneNumber(String phoneNumber) {
    return !TextUtils.isEmpty(phoneNumber) && android.util.Patterns.PHONE.matcher(phoneNumber).matches() && PhoneNumberUtils.;
}

【问题讨论】:

  • 发布与更新现有代码的解释相关的代码。
  • 我会推荐使用TextWatcher来处理这类事情。
  • @Ravi 我有。检查我的问题
  • @Khojiakbar 在这种情况下文本观察器有何帮助?
  • @MarissaNicholas 你可以看这篇文章来制作你自己的TextWatcher,它将根据你的需要格式化文本stackoverflow.com/questions/16975304/…

标签: android regex


【解决方案1】:

我认为最好的方法是使用https://github.com/MichaelRocks/libphonenumber-android

您可以将其包含在您的项目中,如下所示:

repositories {
  jcenter()
}

dependencies {
  implementation 'io.michaelrocks:libphonenumber-android:8.10.7'
} 

然后像这样使用它:

public void validateNumber(View view) {
        PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.createInstance(this);
        Phonenumber.PhoneNumber phoneNumber = null;
        try {

            phoneNumber = phoneNumberUtil.parse("(541) 754-3010"/*replace with your number*/, "US");
            boolean isValid = phoneNumberUtil.isValidNumber(phoneNumber);
            Toast.makeText(this, "" + isValid, Toast.LENGTH_SHORT).show();
        } catch (NumberParseException e) {
            e.printStackTrace();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 2010-09-15
    • 1970-01-01
    • 2011-09-21
    • 2011-08-16
    • 2012-01-14
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多