@
dabao @
383394544 是的,北美一票国家都是 +1 开头,但是号码(+18888888888)解析出来时是 US ,然后使用这个方法`com.google.i18n.phonenumbers.PhoneNumberUtil#isValidNumberForRegion`校验传 CA 也依然校验通过
代码:
```
public static void main(String[] args) {
String str = "+18888888888";
System.out.println(validPhoneNumber(str, "CA"));
}
public static boolean validPhoneNumber(String mobile, String region) {
PhoneNumberUtil instance = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber phoneNumber;
try {
phoneNumber = instance.parse(mobile, "CN");
} catch (NumberParseException e) {
log.warn("手机号校验不通过 phoneNum:<{}> errMsg:<{}>", mobile, e.getMessage());
return false;
}
if (StringUtils.hasText(region)) {
return instance.isValidNumberForRegion(phoneNumber, region);
}
return instance.isValidNumber(phoneNumber);
}
```