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