проверка в JQuery - PullRequest
       18

проверка в JQuery

0 голосов
/ 04 августа 2009

Если указан адрес поло Rd, он идентифицирует «po» в поло и выдает сообщение об ошибке.

Итак, мы должны создать новую проверку, которая не должна принимать адресные строки 1 и 2 со значениями:

  • «PO BOX», «PO BIN», «BIN», «P.O BOX», «P.O BIN», «P.O», «PO»
  • вышеуказанные значения могут быть в любом случае
  • пробелы до, между и после вышеупомянутых слов также должны быть найдены и проверены. Например: «P O 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);
}, "");

Пожалуйста, дайте мне знать, как я могу это изменить

1 Ответ

1 голос
/ 04 августа 2009

редактировать

Я немного поиграл с этим ... не знаю, будет ли это соответствовать 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, p.o, p.o., po box, box, bin, и т. Д., И т. Д. Но дорога поло, testboxtest и т. Д.: Без предупреждения. Одна ошибка: ро-роуд и ошибка ... Я не уверен, что вы можете протестировать 100% случаев в одном Regex.

конец редактирования

Ладно ... Мастер регулярных выражений, похоже, не в сети ... Я попробую:

Попробуйте это регулярное выражение (?:(?: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 для тестирования.

Соответствует:

  • PO BOX 123
  • PO BIN 1
  • БИН 1
  • P.O BOX 134
  • P.O BIN 12
  • P.O 12
  • P.O. 12
  • PO 123

Не соответствует:

  • 123 боксерская дорога
  • 123 коробка дороги
  • 123 поло-роуд
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...