什么是格式正确的短信地址?

我在我的代码中这样做:

if (StringUtils.isNotBlank(mPhone) && !PhoneNumberUtils.isWellFormedSmsAddress(mPhone)) {
    AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle(getString(R.string.cellphone_error));
    alertDialog.setMessage(getString(R.string.cellphone_error_hint));
    alertDialog.show();
    return;
}


但是,我似乎无法输入任何数字来激活此代码。由于某种原因,一切似乎都可以视为格式正确的短信地址。此错误检查如何工作?

我应该只使用isGlobalPhoneNumber吗?

最佳答案

在查看了其中一种方法后,您可能想根据自己的要求使用自己的RegEx来验证数字,例如here所使用的数字,这是最底线。

原因是PhoneNumberUtils.isWellFormedSmsAddress(...)使用String提取传入的PhoneNumberUtils.extractNetworkPortion(...)的网络部分,并基本上检查该网络部分是否具有可拨号数字。

问题是PhoneNumberUtils.extractNetworkPortion(...)删除了大多数非数字,因此+18fvg12变为+1812并且仍然通过。

PhoneNumberUtils.isGlobalPhoneNumber(...)显得更有用,并且
确保电话号码与RegEx [\+]?[0-9.-]+匹配。

尽管+-----598--仍然是一个示例,但这仍然可能不是理想的。

10-07 20:55