android - 如何更新我的电话号码验证功能以仅验证美国电话号码?
问题描述
我有一个通用的电话号码验证功能,目前可以验证所有全球电话号码。我想对其进行更新,使其仅验证美国电话号码。但目前的问题是,即使我将电话号码长度设置为 10,它也会在正好 10 个字符处停止。我的用户可能会输入空格或 ( 之类的内容,例如:“(444)444 4444,如果我将字符数限制为 10,即使它是有效数字,它也不起作用。有什么想法吗?这里是我的功能:
public static boolean isValidPhoneNumber(String phoneNumber) {
return !TextUtils.isEmpty(phoneNumber) && android.util.Patterns.PHONE.matcher(phoneNumber).matches() && PhoneNumberUtils.;
}
解决方案
我认为最好的方法是使用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();
}
}
推荐阅读
- c - NdisoidRequest 状态返回成功但未设置数据包过滤器
- pandas - read_csv 的箱形图失败
- node.js - 没有 Redis/DB 的 NodeJS 刷新令牌
- javascript - 使用 Flask 在单页应用程序中提交表单,无需重新加载
- selenium - 使用 selenium 时 Firefox 的浏览器启动参数是什么?
- google-app-engine - 将简单的 golang 应用程序部署到 appengine 已停止工作
- struct - 为什么 Rust 允许返回当前函数拥有的引用?
- php - Laravel 获取多选下拉值到控制器
- javascript - 为什么带有属性 [name] 的 JS 对象在控制台登录时会变成带有“结果”属性的对象?
- regex - Scala 正则表达式偏函数,正则表达式在偏函数中定义