JavaScript注册表单中传真号码验证的正则表达式

JavaScript注册表单中传真号码验证的正则表达式,javascript,html,regex,forms,validation,Javascript,Html,Regex,Forms,Validation,说到正则表达式,我完全是个新手。即使在阅读了关于它们的指南之后,我仍然很难制定自己的计划。我正在尝试让我的表格验证+12345678910格式的传真号码。我有一些代码,但它允许我提交混合数字和字母,以及提交带有空格的数据,而无需完全填写faxnum文本框。我非常感谢您在表格上提供的任何帮助,以及如何更熟练地使用正则表达式的技巧 var fax = document.registration.faxnum; faxval(fax); function faxval(fax) { var

说到正则表达式,我完全是个新手。即使在阅读了关于它们的指南之后,我仍然很难制定自己的计划。我正在尝试让我的表格验证+12345678910格式的传真号码。我有一些代码,但它允许我提交混合数字和字母,以及提交带有空格的数据,而无需完全填写faxnum文本框。我非常感谢您在表格上提供的任何帮助,以及如何更熟练地使用正则表达式的技巧

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}/>