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

时间:2011-07-09 15:43:46

标签: javascript regex forms validation

您好我有一个关于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";}

4 个答案:

答案 0 :(得分:2)

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

你真的想要测试什么?

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

答案 1 :(得分:0)

尝试([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";}

答案 2 :(得分:0)

试试这个正则表达式:

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]。 '+'指定一个或多个。

答案 3 :(得分:0)

你有if,否则if。您将在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";}