2011-01-20 17 views
0

私はcustomvalidatorを検証し、(可能であれば)郵便番号を置き換えるために取り組んでいます。 これはオランダの郵便番号で、「5050 AA」のように表示されます。ユーザが「5050AA」と入力すると、この郵便番号は「5050AA」に置き換えられます。私はの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

"5038 aa"はmyPCRegExp1に対してテストすると真実にはなりませんが、それは全体の問題です。私は "5038 AA"だけでなく、 "5038AA"を私の最初の正規表現で検証する必要があります。それが有効になっていない場合、私はエラーを返します。そうでなければ、コードを "5038 AA"に書き直そうとします。 – Younes