我需要添加一个匹配所有可能的有效E.164格式电话号码的正则表达式.
这个正则表达式适用于北美电话号码,但我需要一些适用于国际号码的东西:
^(+ 1 | 1)〜([2-9]\d\d [2-9]\d {6})$
示例:+13172222222匹配13172222222仍然匹配,因为+1或1是可选的3172222222仍然匹配,因为+1或1是可选的3171222222不匹配且不是有效的NANPA编号.
资料来源:Freeswitch.org
我也遇到了这个相关的问题,但我认为这对我的需求来说太疯狂了.就我而言,我只是在验证黑名单的条目,我将其与传入的Twilio数据进行比较; 所以,我更关心国家代码有效的天气.我真的只需要测试一个数字是否符合一般的E.164形式,而不是假设它是一个NANPA.
为了更好地理解我需要匹配的内容,以下是Twilio文档中的示例:
如果可能,Twilio请求中的所有电话号码均为E.164格式.例如,(415)555-4345将以"+14155554345"形式出现.但是,偶尔会出现Twilio无法将来电者ID标准化为E.164的情况.在这些情况下,Twilio将报告原始呼叫者ID字符串.
我希望匹配+14155554345,但不匹配(415)555-4345,4155555434,555-4345或5554345.正则表达式不应仅限于匹配美国国家代码.基本上,它应该与+ xxxxxxxxxxx格式匹配.我还认为这个数字可能会更长,因为有多位数的国家/地区代码,例如在英国.T-Mobile的英国号是+447953966150我会更新这个,如果我能想出一个更好的例子.
Gra*_*son 89
接受的答案是好的,除了E.164号码最多可以有15位数.规范也没有表明最低限度,所以我不一定指望10.
它应该是^\+?[1-9]\d{1,14}$
.
见http://en.wikipedia.org/wiki/E.164
age*_*t-j 14
我想在你有一套很好的例子之前,你最好通过一个灵活的正则表达式来服务.这个将匹配a +
后跟10-14位数.
^\+?\d{10,14}$
Run Code Online (Sandbox Code Playgroud)
细分,这个表达意味着:
^
匹配字符串的开头.
\+?
可选择匹配+
符号.
\d{10,14}
匹配10到14位数.
$
确保我们在字符串的末尾.
如果您知道特定索引处的数字不能是1或0,那么您可以使用该[2-9]
位置,如下所示:
^\+?\d{6,7}[2-9]\d{3}$
Run Code Online (Sandbox Code Playgroud)
[2-9]
表示匹配2到9之间的任何数字(不匹配0或1)
归档时间: |
|
查看次数: |
41990 次 |
最近记录: |