我使用三个输入来创建一个表单,供用户输入他们的电话号码。
第一个输入是三位数区号 (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/