我需要添加一个正则表达式来匹配所有可能有效的 E.164格式电话号码。
这个 regex 适用于北美电话号码,但是我需要一些适用于国际号码的东西:
([2-9] d [2-9] d {6}) $
示例: + 13172222222匹配 13172222222 still matches because +1 or 1 are optional 3172222222仍然匹配,因为 + 1或1是可选的 3171222222不匹配,也不是有效的 NANPA 号码。
资料来源: Freeswitch.org
我也遇到了 这个相关的问题,但我认为它太疯狂了,我的需要。在我的例子中,我只是验证一个黑名单条目,并将其与传入的 Twilio 数据进行比较; 因此,我不太关心国家代码是否有效。我真的只需要测试一个数字是否匹配一般的 E.164形式,而不是假设它是一个 NANPA。
To be better understand what I need to match, here is an example from the Twilio 文档:
请求中的所有电话号码 Twilio are in E.164 format if possible. For example, (415) 555-4345 会显示为’+ 14155554345’。 然而,偶尔也会出现这种情况 where Twilio cannot normalize an 来电显示为 E.164 Twilio 会报告原始情况 来电显示字符串。
我想匹配 + 14155554345,但不匹配(415 -)555-4345、41555434、555-4345或5554345。不过,正则表达式不应仅限于匹配国家国家代码。基本上,它应该匹配 + xxxxxxxxx 格式。我还认为这个数字可能会更长,因为有多位数字的国家代码,比如在英国。T-Mobile 在英国的号码是 + 447953966150,如果我能想出一个更好的例子,我会更新这个。