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>

当我运行此程序时,我收到“不允许邮政信箱”错误:邮政信箱、邮政信箱、邮政信箱、邮政信箱、邮政信箱、箱子、垃圾箱等。但马球路、testboxtest 等:没有警告。一个错误:po road throws and error...我不确定您是否可以在单个正则表达式中测试 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
  • 订单 12
  • 宝12
  • 订单 123

不匹配:

  • 拳击路123号
  • 123箱路
  • 马球路123号
于 2009-08-04T08:19:08.567 回答