JavaScript国际电话号码正则表达式

6
以下正则表达式无法匹配最多15位数字的国际电话号码:
^[a-zA-Z0-9-().\s]{10,15}$

需要调整什么?

1
你确定“国际电话号码”不超过15位数字了吗? - Tomalak
我只是在按照客户的指示操作。 - Amen
那么你的客户指示你遵循哪些规则? - The Archetypal Paul
那个 {10,15} 到底是什么意思? 是指最小值为 10 位数字,最大值为 15 位数字吗? - gumuruh
4个回答

11
你可能会发现以下正则表达式更有用,它基本上首先剥离一个 国际电话号码 可以包含的所有有效特殊字符(空格、括号、+, -, ., ext),然后计算是否至少有 7 个数字(有效本地号码的最小长度)。
function isValidPhonenumber(value) {
    return (/^\d{7,}$/).test(value.replace(/[\s()+\-\.]|ext/gi, ''));
}

4

试着添加一个反斜杠:

var unrealisticPhoneNumberRegex = /^[a-zA-Z0-9\-().\s]{10,15}$/;

现在它还不是很有用,因为你允许任意数量的标点符号。实际上,像这样验证电话号码——特别是如果您希望它真正适用于所有可能的国际电话号码——可能是一项无望的任务。我建议您采用@BalusC的建议。


0
然后计算是否至少有7个数字(有效本地号码的最小长度)。
世界上最短的本地号码只有两到三位数。
有许多没有区号的国家。
有几个知名地方有3位国家代码和4位本地号码。
为了保险起见,将您的限制降低到6或5可能是明智的选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接