这里我有一个javascript/html代码。我的代码应该从用户读取一个或多个邮政编码的字符串,并返回第一个无效的邮政编码。它应该忽略空间。用户只能使用邮政编码48103、48104、48105、48106、48197、48198。其他的都应该是无效的。我的代码主要是起作用的,除非用户输入一个以上的空间来分隔邮政编码。例如,如果用户输入"48103,空间,98324“,我的程序应该返回98324,但它只是返回空间。有人能帮忙吗?谢谢
<html>
<head>
<title>Due 03/30</title>
<script>
function test()
{
var usr = prompt("Enter a string of zip codes separated by spaces: ");
var array = [];
array = usr.split(" ");
//alert (array);
var pattern = /(4810[3-6])|(4819[7-8])/;
var str;
var isBad = false;
var i;
for (i =0; i < array.length; i++)
{
str = array[i];
if (!str.match(pattern) && str != " ")
{
alert ("The zipcode " + str + " is not a valid zipcode!");
isBad = true;
break;
}
}
if (isBad === false)
alert("All zipcodes are valid");
}
</script>
</head>
<body>
<button onClick="test();">Test String</button>
</body>
</html>
发布于 2015-03-25 14:58:31
你的循环:
for (i =0; i < array.length; i++)
{
str = array[i];
if (!str.match(pattern) && str != " ")
{
alert ("The zipcode " + str + " is not a valid zipcode!");
isBad = true;
break;
}
}
应该是:(str != ""
而不是str != " "
)
for (i =0; i < array.length; i++)
{
str = array[i];
if (!str.match(pattern) && str != "") // No space
{
alert ("The zipcode " + str + " is not a valid zipcode!");
isBad = true;
break;
}
}
这是因为当您将字符串:"JavaScript is Awesome!"
拆分为空格时,javascript将其视为"JavaScript"+Space+"is"+Space+""+Space+"Awesome!"
。
发布于 2015-03-25 14:56:54
使用正则表达式将拆分中的多个空格替换为单个空格:
array = usr.split(/ +/g);
(感谢@HBP的编辑。)
然后,您可以替换以下代码:
if (!str.match(pattern) && str != " ")
…通过以下方式:
if (!str.match(pattern))
https://stackoverflow.com/questions/29259047
复制相似问题