0

アドレス polo Rd が指定されている場合、polo の「po」を識別し、エラー メッセージを警告します。

したがって、住所行 1 と 2 を値で受け入れない新しい検証を構成する必要があります。

  • 「私書箱」、「私書箱」、「ビン」、「私書箱」、「私書箱」、「私書箱」、「私書箱」
  • 上記の値はどのような場合でもかまいません
  • 上記の単語の前後のスペースも見つけて検証する必要があります。例: 「PO 1234」は検証され、エラー メッセージを警告する必要があります。
  • ただし、「Polo Rd」、「Robin 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);
}, "");

どうすれば変更できるか教えてください

4

1 に答える 1

2

編集

私はこれを少しいじりました...これがあなたのケースの100%に一致するかどうかはわかりませんが、これを試してください:

<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、po box、box、bin など。ただし、ポロ ロード、testboxtest など: 警告はありません。1 つのバグ: po ロードのスローとエラー... 1 つの正規表現で 100% のケースをテストできるかどうかはわかりません。

編集を終了

わかりました...正規表現マスターはオンラインではないようです...試してみます:

この正規表現を試してください(?:(?: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
  • 私書箱 1
  • ビン 1
  • 私書箱 134
  • ポービン 12
  • PO12
  • ポ12
  • PO123

一致していません:

  • 123ボクシングロード
  • 123ボックスロード
  • 123ポロロード
于 2009-08-04T08:19:08.567 に答える