繁体   English   中英

Javascript 使用正则表达式的表单验证邮寄地址不起作用!

[英]Javascript form validation mailing address with regular expression not working!

您好,我对 javascript 表单验证和正则表达式有疑问。 下面是我使用的代码。 我正在尝试验证地址是否有数字和字母表中的字母。 此代码用于实验,不需要进行任何超安全验证。

问题是下面的代码似乎不起作用。 无论我做什么,警报框都会告诉我我必须输入一个有效地址。 怎么了。 正则表达式不是搜索值发现false吗? 即使我输入像 123 Sky Rd 这样的普通地址。 它仍然输出请输入有效地址。

我希望我的问题很清楚。 下面是真正阐明发生了什么的代码。 为什么这无效?

 if (document.customerInfo.address.value == ""){
        msg += "Please enter a valid address\n";
        }
    else if (document.customerInfo.address.value.match(/[0-9]/) != true)
            {msg += "Please enter a valid address\n";}
    else (document.customerInfo.address.value.match(/[abc]/) != true)
            {msg += "Please enter a valid address\n";}

这段代码在很多方面都是错误的。 首先,match() 不返回 true 或 false。 它返回 null 或匹配数组。 其次,您的正则表达式正在查找所有数字的字符串或所有字符的字符串,并且您拥有两者的字符串(包括空格)。

你真正想测试什么?

/[a-zA-Z0-9 ]+/ 的单个正则表达式将允许数字、字母和空格,但我不知道你为什么还要检查它。 地址不是真正可以通过这种方式检查的东西。 您可以确保该字段不为空,但地址可以采用各种 forms,包括像 Suite #100 中的 # 这样的字符。 我认为您在这里真正可以做的就是检查它是否为空。

尝试([0-9])([az])

if (document.customerInfo.address.value == ""){
        msg += "Please enter a valid address\n";
        }
    else if (document.customerInfo.address.value.match(/([0-9])/) != true)
            {msg += "Please enter a valid address\n";}
    else (document.customerInfo.address.value.match(/([a-z])/) != true)
            {msg += "Please enter a valid address\n";}

试试这个正则表达式:

if (document.customerInfo.address.value == ""){
    msg += "Please enter a valid address\n";
}
else if (document.customerInfo.address.value.match/[a-zA-Z0-9 ]+/) == null) {
    msg += "Please enter a valid address\n";
}

您仅匹配一个字符且仅匹配小写[az] '+' 指定一个或多个。

你有如果,否则如果,否则。 您在 if 语句的所有部分中附加了“请输入有效地址”,即使在 else 中也是如此。

将代码更改为

if (document.customerInfo.address.value == ""){
    msg += "Please enter a valid address\n";
    }
else if (document.customerInfo.address.value.match(/[0-9]/) != true)
        {msg += "Please enter a valid address\n";}
else if (document.customerInfo.address.value.match(/[abc]/) != true)
        {msg += "Please enter a valid address\n";}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM