2011-04-17 77 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