Javascript电话号码验证

ryr*_*yan 2 javascript validation

我想确保正确输入电话号码.它们是英国号码,不能包含任何符号或字母.它们的长度必须为11.

所以我尝试了以下方法:

else if (phone == null || !phone.toString().match(/^[-]?\d*\.?\d*$/)){
Run Code Online (Sandbox Code Playgroud)

但这实际上允许任何长度甚至空白输入.

我该怎么做来验证电话号码?我对Javascript没有经验.

Chr*_*isJ 8

准确匹配11位数的正则表达式是/^\d{11}$/.


小智 5

英国号码长度不是 11 位。它们是 9 或 10 位数字的混合,不包括 0 中继代码或+44国家/地区前缀。

这些规则有些复杂,但可以用一些正则表达式模式来定义。

第一步必须是在调查号码的其余部分之前去掉+4400 44011 44+44 (0)00 44 (0)011 44 (0)前缀。0

Pattern: ^(\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)(44)\)?[\s-]?)?\(?0?(?:\)[\s-]?)?([1-9]\d{1,4}\)?[\d\s-]+)((?:x|ext\.?|\#)\d{3,4})?$
Run Code Online (Sandbox Code Playgroud)

使用上述模式提取44from$2即可知道使用了国际格式,否则如果$2为空,则假设国家格式。

从中提取可选的分机号码详细信息$4并存储它们以供以后使用。

从 中提取 NSN(包括空格、连字符和括号)$3。删除这些空格、连字符和括号,并使用下面的正则表达式模式来验证长度和初始数字。

Pattern: ^((1[1-9]|2[03489]|3[0347]|5[56]|7[04-9]|8[047]|9[018])\d{8}|(1[2-9]\d|[58]00)\d{6}|8(001111|45464\d))$ 
Run Code Online (Sandbox Code Playgroud)

更详细的模式可以在其他地方找到,甚至包括各个区号。