2011-04-17 78 views
0

例如,我想测试邮编是否有效,因此我使用“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的人不会?

+0

你到目前为止做了什么?一些代码会有所帮助。 – 2011-04-17 14:19:30

+0

对不起 - 现在更新! – ez007 2011-04-17 15:25:35

+0

这不仅仅是一个移动你的if语句并粘在另一个语句的情况吗?确实,为什么re.test()和re2.test()条件导致两个不同的块? – Stephen 2011-04-17 15:31:45

回答

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; 
} 
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)" 
+0

谢谢,我试图把它放到我的代码中,但是根本没有提示? – ez007 2011-04-17 16:02:40

+0

为什么不尝试使用Firebug for Firefox或IE调试器或使用Chrome来调试它。它会告诉你你正在接触哪些条件,以及为什么警报不显示,或者Javascript是否有问题。 – Abhishek 2011-04-17 16:06:01

+0

那么在这种情况下're'测试是正确的。因此,它会输入第一个if(re.test(str))',设置'PostalCodeValid'为true,然后进入if(isPostalCodeValid)节并进入该节,否则什么都不会发生。 *所有* Abhishek所做的是以一种稍微不同的格式重写你的代码,而不是改变(几乎)任何含义。 你的意思是先检查're',然后**如果是真的**检查're2'? – Stephen 2011-04-17 16:06:29