如何评估同一函数中的两个正则表达式? - 更新!

时间:2011-04-17 14:16:21

标签: javascript

例如,我想测试一个邮政编码是否有效,所以我在'if else'场景中使用我的正则表达式测试邮政编码,并在提交表单时调用该函数。

function validatePostal(postalCode)
var re = new RegExp(/^([a-zA-Z]{2})([0-9]{1,2})[ ]([0-9]{2})([a-zA-Z]{1,2})$/); 
var re2 = new RegExp(/^([cC]{1})([aA]{1})(2|18|17)[ ]([0-9]{2})([a-zA-Z]{1,2})$/);
var str = shipPostalCode.value; 
if (re.test(str))
{
return true; 
}
else if (re2.test(str))
{
return true;
alert("Congratulations!!"); 
}
else
{
alert("That is not a valid postcode. Please verify your input. Format should be AA11 11AA"); 
return false;
}
}

onclick="return (validatePostal(postalCode)"

我如何针对另一个正则表达式测试所述邮政编码,然后如果邮政编码有效,则仅向特定区域中的人显示消息。 例如那些进入CA4的人会得到一条消息而那些进入DA4的人不会?

2 个答案:

答案 0 :(得分:1)

好的,假设rere2都是您要接受的邮政编码的正则表达式,您可以使用以下结构:

if (re.test(str) || re2.test(str))
{
    return true; 
}
else
{
    alert("That is not a valid postcode. Please verify your input. Format should be AA11 11AA"); 
    return false;
}

现在,如果你想进行另一次检查,就像你说的“DA4”与“CA4”一样,你会有另一个正则表达式(让我们称之为re3是一致的),然后你可以有一个内部if语句,如下所示:

if (re.test(str) || re2.test(str))
{
    if (re3.test(str)) {
        alert("You entered a CA4 postcode!");
    } else {
        alert("You did not enter a CA4 postcode :(.");
    }

    return true; 
}
else
{
    alert("That is not a valid postcode. Please verify your input. Format should be AA11 11AA"); 
    return false;
}

答案 1 :(得分:0)

    function validatePostal(postalCode)
var re = new RegExp(/^([a-zA-Z]{2})([0-9]{1,2})[ ]([0-9]{2})([a-zA-Z]{1,2})$/); 
var re2 = new RegExp(/^([cC]{1})([aA]{1})(2|18|17)[ ]([0-9]{2})([a-zA-Z]{1,2})$/);
var str = shipPostalCode.value; 
var isPostalCodeValid = false;
if (re.test(str))
{
isPostalCodeValid = true; 
}
else if (re2.test(str))
{
alert("Congratulations!!");
isPostalCodeValid = true;
}

if(isPostalCodeValid){
    //Check for Postalcode and show mssg or not
}else{
     alert("That is not a valid postcode. Please verify your input. Format should be AA11 11AA"); 
     return false;
}
}

onclick="return (validatePostal(postalCode)"