为了检查电话号码(我有类似 +918172014908 的模式电话号码)验证,我使用 libphonenumber.jar 文件。 它根据国家/地区检查电话号码是否有效。 我用这个:--
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber numberProto = phoneUtil.parse("phone_number", "");
phoneUtil.isValidNumber(numberProto) == true ? "valid" : "phone no not valid"
它工作正常..但是这个 jar 文件需要一点内存.. 有没有另一种方法可以在没有 libphonenumber.jar 的情况下检查电话号码格式验证??? 你能建议点什么吗???
最佳答案
此答案可能对您有所帮助: https://stackoverflow.com/a/5959341
要验证一个字符串,使用
if (setNum.matches(regexStr))
where regexStr can be:
//matches numbers only
String regexStr = "^[0-9]*$"
//matches 10-digit numbers only
String regexStr = "^[0-9]{10}$"
//matches numbers and dashes, any order really.
String regexStr = "^[0-9\\-]*$"
//matches 9999999999, 1-999-999-9999 and 999-999-9999
String regexStr = "^(1\\-)?[0-9]{3}\\-?[0-9]{3}\\-?[0-9]{4}$"
在美国有一个非常长的正则表达式来验证电话(7 到 10 位数字,允许分机等)。来源来自这个答案:A comprehensive regex for phone number validation
String regexStr = "^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$"
关于java - 如何从电话管理器中检查电话号码格式是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25763935/