ryr*_*yan 2 javascript validation
我想确保正确输入电话号码.它们是英国号码,不能包含任何符号或字母.它们的长度必须为11.
所以我尝试了以下方法:
else if (phone == null || !phone.toString().match(/^[-]?\d*\.?\d*$/)){
Run Code Online (Sandbox Code Playgroud)
但这实际上允许任何长度甚至空白输入.
我该怎么做来验证电话号码?我对Javascript没有经验.
小智 5
英国号码长度不是 11 位。它们是 9 或 10 位数字的混合,不包括 0 中继代码或+44国家/地区前缀。
这些规则有些复杂,但可以用一些正则表达式模式来定义。
第一步必须是在调查号码的其余部分之前去掉+44、00 44、011 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)
更详细的模式可以在其他地方找到,甚至包括各个区号。