регулярное выражение в jquery - PullRequest
       0

регулярное выражение в jquery

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

Мне нужно предоставить проверку P.O Box для полей адреса. Теперь у нас есть проверка регулярных выражений в jquery, которая имеет следующие ограничения:

  1. Если указан адрес поло Rd, он идентифицирует «po» в поло и выдает сообщение об ошибке. Итак, мы должны создать новую проверку, которая не должна принимать адресные строки со значениями:

    "PO BOX", "PO BIN", "BIN", "P.O BOX", "P.O BIN", "P.O", "PO"

  2. вышеуказанные значения могут быть в любом случае

  3. пробелы до, между и после вышеупомянутых слов также должны быть найдены и проверены.
    Например: " P O 1234 " должно быть проверено и выдается сообщение об ошибке.

  4. Но "Polo Rd", "Robin Rd", "testbintest" должны быть приняты как допустимые адреса в обеих адресных строках.

Код прямо сейчас в проверке jquery:

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);
}, "");

Новый разработанный код частично работает так же, как и взятие

Polo road 
Testbintest 

Но выдает ошибку для

Robin road
Robox road 

Ниже приведен новый код, который частично работает

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.");

Ответы [ 3 ]

2 голосов
/ 06 августа 2009

Вы проверили мой комментарий в ваш старый вопрос ?

Правильным поведением было бы обновить исходный вопрос информацией о вашем собственном прогрессе вместо повторной публикации.

Терпение - добродетель.


Это ответ, который я написал в вашем исходном вопросе:

Решение вашей проблемы заключается в том, что вам необходимо ввести пробел после начального совпадения P.O. Таким образом, вы не будете сопоставлять адреса, начинающиеся с Po-. Тогда вам также нужно накрыть корпус только плоскостью BOX или BIN.

Попробуйте что-нибудь в этом духе:

/ ^ \ S * ((Р (ОСТ) \ S * O (FF (ДВС)) \ S + (В (В |?.??.? ОХ))) | B (IN | OX)) / я

Есть много хороших инструментов, которые упрощают обзор регулярных выражений. Одним из таких инструментов, которые вы можете найти в Интернете, является RegExr .

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

Если вы действительно хотите проверить список слов, более удобно выполнять список тестов, каждый для определенного слова.

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

Извините, я не подписан. Итак, вы смотрите, что такое адресная строка, и если она имеет «PO» в качестве первых букв, то она не должна указывать на них?

«PO BOX», «PO BIN», «BIN», «P.O BOX», «P.O BIN», «P.O», «PO»

Я не понимаю, почему вы смотрите на "Polo Rd", и каким-то образом это, кажется, решает, что вы собираетесь пропустить или не пропустить.

Затем, с другой стороны, вы говорите, что они действительны

Но "Polo Rd", "Robin Rd", «testbintest» следует принять как действительный адрес в обоих адресах линии.

Но сначала вы сказали, что "Polo Rd" недействителен.

Тогда я не получу другие ваши проверочные тесты, как будто я не понимаю, почему у вашего пользователя не может быть этого

"Testbintest"

Как то, что не так с этим. Я думал, что вы просто проверяете адреса ящиков типа P.O, так как вы не отправляете их или что-то в этом роде.

Я потерян

Ваш дальнейший пост говорит, что вы просто хотите проверить только эти слова. Вы можете попробовать это

(\s)*P(\s)*.?(\s)*O((\s)*B(\s)*[O,I](\s)*[N,X])?

Тест с этими выражениями

PO
P.O
                P. O
               PO
PO BIN
PO BOX
BIN
P.O BOX
P.O BIN
 P O 1234 

Вы можете попробовать это тоже.

 ((\s)*[Pp](\s)*(.)?(\s)*[Oo](\s)*)*([Bb](\s)*[OIoi]+(\s)*[NXin])*

Проверено с.

P O 1234 
P.O
                P. O
               PO
PO BIN
PO BOX
BIN
P.O BOX
P.O BIN
Robin road
Robox road
MY little poney P.O test
Testbintest
bob
aagc

Просто не получается "P O 1234"

То, что мне действительно трудно, это то, сколько вы можете ожидать в адресной строке, нужно ли проверять каждое слово?

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