編集
私はこれを少しいじりました...これがあなたのケースの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ポロロード