2009-08-04 22 views
0

アドレスポロRdが指定されている場合は、ポロで「po」と識別され、エラーメッセージが表示されます。jqueryでの検証

そこで、我々は値を持つアドレスライン1と2を受け入れるべきではない新しい検証フレームする必要があります

  • "私書箱"、 "PO BIN"、 "BIN"、 "私書箱" を、 "PO BIN"、 "PO"、 "PO"
  • これらの値はいずれの場合もあり得ます。例: "P O 1234"を検証し、エラーメッセージを警告する必要があります。
  • しかし、「ポロRdの」、「ロビン・Rdの」、「testbintestは」両方のアドレス線に有効なアドレスとして受け入れられるべき

このために書かれたコードが

jQuery.validator.addMethod("nopobox", function(value, element) { 
    return this.optional(element) || ! /(P(OST)?\.?\s*O(FF(ICE)?)?\.?\s*((BOX)|(BIN)))|(^[^0-9]*((P(OST)?\.?\s*O(FF(ICE)?)?\.?)|((BOX)|(BIN))))/i.test(value); 
}, ""); 

てくださいです私はそれを私はこれで周りのビットを果たした

+0

を私はあなたのcoditionsの一部が他の除外と思います例えば ​​'BIN'の検証に失敗したいが' testbintest'を渡したいとしますが、 'BIN'はどんな場合でも可能です入力文字列内の任意の位置を指定します。 – RaYell

+0

はいPOBINは失敗するはずですが、通常の住所ラインラインロビンストリートまたはホービンロードは検証をパスしてください – raj

答えて

1

編集

を変えることができる方法を知ってみましょう...ドンこれはあなたの例を100%に一致するが、これをしようとする場合は、」tは知っている:

<html> 
    <head> 
     <title>testing...</title> 
     <script type="text/javascript" src="scripts/jquery/1.3.1/jquery.min.js"></script> 
     <script type="text/javascript" src="scripts/jquery.validate.min.js"></script> 
     <script type="text/javascript"> 
jQuery.validator.addMethod("nopobox", function(value, element) { 
    return ! /(?:p(?:ost)?\.?\s?[o|0](?:\.|ffice)?)\b|(?:b(?:[o|0]x)|(?:in))\b/i.test(value); 
}, "PO Boxes are not allowed."); 

$(document).ready(function() {$('#test').validate({rules: {address: {nopobox: false, required: true}}})}); 
     </script> 
    </head> 
    </body> 
     <form id="test" action="#"> 
     <input type="textbox" id="address" class="required nopobox" /> 
     <input type="submit" /> 
     </form> 
    </body> 
</html> 

を私はこれを実行すると、私は 『私書箱が許可されていません』のエラーが出る:PO、PO、PO、PO、私書箱を、ボックス、ビンなど。しかし、ポロロード、testboxtestなど:警告なし。 1つのバグ:PO道路のスローとエラー... 1つのRegexで100%のケースをテストできるかどうかはわかりません。

エンド編集

[OK]を...正規表現のマスターは、私はそれに打撃を与えるだろう...オンラインであるように思えません。

(?:(?:p(?:[o|0]st)?\.?(?:[o|0](?:ffice)?\.?))|(?:b[o|0]x|bin))(?=\s\d)

それをこの正規表現を試してみてください私にpowertoyに次のように与える:(として入力:テスト用s/(?:(?:p(?:[o|0]st)?\.?(?:[o|0](?:ffice)?\.?))|(?:b[o|0]x|bin))(?=\s\d)/**NO PO BOXES**/i

マッチ:

  • 私書箱123
  • PO BIN 1
  • BIN 1つの
  • P.OのBOX 134
  • P.O BIN 12
  • P.O 12
  • P.O.12
  • PO 123

は一致しません:

  • 123ボクシング道路
  • 123箱の道路
  • 123ポロ道路
+0

それは機能していませんし、基本的な要件はポーフォーロードが肯定的ですがPOボックスはエラーを投げます。戻り値this.optional(element)||!s /(?:(?: p(?:[o)])戻り値:0を返します。 (?:0 | x | bin))(?= \ s \ d(0:0)st) )/ ** NO PO BOXES **/i for testing; }、 ""); – raj

+0

私はポーランド道路、ロビン道路が動作するようにしたいが、ポストボックスやポンビンは、エラーをスローする必要がありますあなたはこの論理で正規表現を書くために私を助けてください – raj

+0

私は(上の編集を参照してください)ほとんどの場合、正規表現/ jqueryとしてより優れた人が今すぐ助けなければならないでしょう。 – beggs