2011-01-20 93 views
0

我正在使用customvalidator來驗證並替換(如果可能)郵政編碼。 這是荷蘭郵政編碼,應該看起來像「5050 AA」。當用戶輸入「5050AA」時,應將此郵政編碼替換爲「5050 AA」。我想這通過將下面的腳本到我的網頁,這就是所謂的的CustomValidator:Jquery郵政編碼clientvalidate

<script type="text/javascript"> 
      function Postcode_ClientValidate(source, arguments) { 
       var val = arguments.Value 
       var result = ""; 
       var myPCRegExp1 = new RegExp("^[1-9][0-9]{3}\s?[a-zA-Z]{2}$", "i"); 
       var myPCRegExp2 = new RegExp("(\d{4}) (\w{2})");  

       if ((!myPCRegExp1.test(val)) && (!myPCRegExp2.test(val))) { 
        arguments.IsValid = false; 
       } else { 
        if (myPCRegExp1.test(val)) { 
         arguments.Value = val.replace(myPCRegExp1, "$1, $2"); 
         arguments.IsValid = true; 
        } else if (myPCRegExp1.test(val)) { 
         arguments.IsValid = true; 
        }    
       } 

       //jQuery("input#[HIERDEID]").val("Test"); 
      } 
     </script> 

然而,上面的腳本是撿了「5038AA」,而不是「5038 AA」作爲搭配,所以我無法驗證工作的郵政編碼,也無法重新編寫有效的郵政編碼。 我在做什麼錯?

這是一個形式和的CustomValidator一個標準的.aspx頁面: '\ S'

回答

0

「5038 AA」 是匹配myPCRegExp1,也因爲中

我認爲你需要這樣的:

var myPCRegExp1 = new RegExp("^([1-9][0-9]{3})([a-zA-Z]{2})$", "i"); 
+0

當對myPCRegExp1進行測試時,「5038 aa」沒有變爲真,這就是整個問題。我需要「5038 AA」,但也需要「5038AA」才能通過我的第一個正則表達式進行驗證。如果它沒有變得有效,我會返回一個錯誤,否則我會嘗試將代碼重寫爲「5038 AA」。 – Younes 2011-01-20 10:53:33