JavaScript注册表单中传真号码验证的正则表达式
说到正则表达式,我完全是个新手。即使在阅读了关于它们的指南之后,我仍然很难制定自己的计划。我正在尝试让我的表格验证+12345678910格式的传真号码。我有一些代码,但它允许我提交混合数字和字母,以及提交带有空格的数据,而无需完全填写faxnum文本框。我非常感谢您在表格上提供的任何帮助,以及如何更熟练地使用正则表达式的技巧JavaScript注册表单中传真号码验证的正则表达式,javascript,html,regex,forms,validation,Javascript,Html,Regex,Forms,Validation,说到正则表达式,我完全是个新手。即使在阅读了关于它们的指南之后,我仍然很难制定自己的计划。我正在尝试让我的表格验证+12345678910格式的传真号码。我有一些代码,但它允许我提交混合数字和字母,以及提交带有空格的数据,而无需完全填写faxnum文本框。我非常感谢您在表格上提供的任何帮助,以及如何更熟练地使用正则表达式的技巧 var fax = document.registration.faxnum; faxval(fax); function faxval(fax) { var
var fax = document.registration.faxnum;
faxval(fax);
function faxval(fax)
{
var numbers = /[\+? *[1-9]+]?[0-9 ]+/; //Bad regex
if (fax.value.match(numbers))
{
document.getElementById("faxmsg").innerHTML=("Everything is OK.");
faxmsg.style.color="green";
}
else
{
faxmsg.innerHTML=("Invalid fax number.");
faxmsg.style.color="red";
}
};
要匹配像+12345678910这样的数字,请尝试:
\+1[2-9][0-9]{9}
我假设+1部分是国际号码代码,234是区号,567是交换机,8910是号码的其余部分。此模式还将匹配一个数字,例如+12125551212
任何美国或加拿大电话号码的第一位数字必须为2到9。所以我们可以将其作为第一个字符([2-9]
)。然后数字的其余部分将是9位数,从0到9([0-9]{9}
)
如果你想允许-或者。您也可以使用:
\+1(\.\.\-)[2-9][0-9]{2}(\.\.\-)[0-9]{3}(\.\.\.\-)[0-9]{4}
。(| \.\124; \-)
部分的意思是“不允许使用字符、a.字符或a-字符。”我建议您寻找一个好的传真号码,而不是一个坏的传真号码。您使用的方括号不正确。请尝试/(\+?*[1-9])?[0-9]+/
,也许?@squemishossifrage不幸的是,这给了我同样的结果。@user3361043啊,您还需要匹配字符串的开头和结尾:/(\+?*[1-9])?[0-9]+$/
您不应该在正则表达式中放置任何空格!(但如果需要匹配空格,只需使用\s
)我尝试了您的第一个正则表达式,但我的表单完全停止工作。现在我正在使用squeamish的/^(\+?*[1-9])?[0-9]+$/regex,但它仍然允许我提交不完整的数据。我需要一个将用户限制为+12345678910格式的解决方案。如果您还没有,请尝试将其包装为/pattern delimeters:/\+1[2-9][0-9]{9}/
或/\+1(\\.\\.\\-)[2-9][0-9]{2}(\.\.\.-)[0-9]{3}(\.\.\.-)[0-9]{4}/>