javascript - 我对使用三个输入的电话号码使用的正则表达式代码有什么问题

标签 javascript regex forms input phone-number

我使用三个输入来创建一个表单,供用户输入他们的电话号码。

第一个输入是三位数区号 (111 111 2312),第二个输入是电话号码的前三位数字 (111 111 2312),最后输入的是电话号码的最后四位数字(111 111 2312)。

提交表单时,我使用此正则表达式代码来确保输入正确输入。该代码应该确保前两个输入中有三个数字,第三个输入中有四个数字。它还应该确保只输入数字。即使数字少于所需数量,我的正则表达式代码也不起作用,如果输入了字母,我的正则表达式代码也不起作用。

var phoneno = /^\d{3}$/;  
if(document.forms["myForm"]["phone1"].value.match(phoneno))  
{   
}  
else  
{  
    alert("You have entered an invalid Area Code");  
    return false;  
}  
var phoneno1 = /^\d{3}$/;  
if(document.forms["myForm"]["phone2"].value.match(phoneno1))  
{   
}  
else  
{  
    alert("Not a valid Phone Number");  
    return false;  
}  
var phoneno2 = /^\d{4}$/;  
if(document.forms["myForm"]["phone3"].value.match(phoneno2))  
{   
}  
else  
{  
    alert("Not a valid Phone Number");  
    return false;  
}  

感谢您的帮助,非常感谢您的帮助。

最佳答案

注释是正确的,我认为您应该使用一个字段来收集值并使用正则表达式进行检查。然后你就可以简化整个事情。如果您愿意,您仍然可以允许用户灵活地在数字上加标点符号。

我认为最好在您的实例中使用 test() ,因为 match 具有不必要的开销,它会给您正确的结果,但会使用更多资源。在这种情况下,这可能可以忽略不计,但养成这样做的习惯是一件好事。

我有时会使用黄油刀来松开螺丝,但使用 Screwdriver 会更好。

就目前情况而言,我认为你的正则表达式有效

var a = 111;
var b = 111;
var c = 4444;
var phoneno = /^\d{3}$/;  
var phoneno1 = /^\d{3}$/;
var phoneno2 = /^\d{4}$/;    
console.log(phoneno.test(a));
console.log(phoneno1.test(b));
console.log(phoneno2.test(c));

为了简化,您可以简单地使用正则表达式,例如。

var d = '111 222 3333';
var patt = /[0-9]{10}/;
d = d.replace(/[- ]+/g,'') //replace whitespaces and hyphens with nothing;
console.log(patt.test(d))

显然,在任何一种情况下,您的 if else 都会取代控制台。
我一路上注意到您正在使用 return false 是因为这是函数的一部分而我们没有看到它的全部?

关于javascript - 我对使用三个输入的电话号码使用的正则表达式代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771187/

相关文章:

python - 表单发送错误,Flask

javascript - 反转 'export2',没有找到参数

javascript - 在这种情况下如何正确利用 $.Deferred()/Promise() ?

javascript - map D3.js - ogr2ogr安装

python - 为什么下面的正则表达式代码返回逗号 (,)

python - python中许多正则表达式的速度

javascript - 如何阻止用户在特定表单字段中输入内容?

javascript - 如何动态切换类以点击触发不同的功能

regex - 匹配 DNS 主机名或 IP 地址的正则表达式?

jquery - 根据单选按钮选择显示表单字段