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

Javascript form validation mailing address with regular expression not working!

本文关键字:地址 不起作用 验证 表单 正则表达式 Javascript      更新时间:2023-09-26

你好,我有一个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()不返回真或假。它返回null或一个匹配数组。其次,你的正则表达式正在寻找一个由所有数字组成的字符串或一个由所有字符组成的字符串,而你有一个由两者组成的字符串(包括空格)。

你到底想测试什么?

一个/[A- za - z0 -9]+/的正则表达式将允许数字,字母和空格,但我不知道你为什么要检查这个。地址不能用这种方法来检查。您可以确保该字段不是空的,但是地址可以采用各种形式,包括像Suite #100中的#这样的字符。我认为这里你能做的就是检查它是否为空

尝试([0-9])([a-z])

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, else if, else。在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";}

试试这个regex:

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";
}

您只匹配一个字符,并且只匹配小写的[a-z]。"+"指定一个或多个