2009-08-05 3 views
0

мне нужно предоставить подтверждение PO Box для адресных полей Теперь у нас есть проверка регулярных выражений в JQuery, который имеют некоторые ограничения следующим образом:регулярного выражения в 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."); 
+0

Не могли бы вы немного переформатировать свой пост, чтобы он стал более читаемым. Благодаря! – Amber

+2

Duplicate: http://stackoverflow.com/questions/1228287/post-box-bin-validation – Gumbo

+0

Привет Очень просто Мне нужно выражение регулярного выражения для проверки почтового ящика , которое должно вызывать ошибку для входящих слов ("PO BOX «PO BIN», «BIN», «PO BOX», «PO BIN», «PO», «PO») в функции j-запроса – raj

ответ

0

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

"PO BOX", "ПО БИН", "БИН", "PO BOX", "ПО БИН", "ПО", "ПО"

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

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

Но «Polo Rd», «Робин 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»

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

2

Вы проверили мой комментарий в your old question?

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

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


Это ответ, который я написал в своем оригинальный вопрос:

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

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

/^ \ S * ((P (ОСТ) \ S * O (FF (ICE)) \ S + (B (IN?.??.? | OX))?) | B (IN | OX))/i

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

+2

+1 за замечание «Терпение - это добродетель». –

0

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

Смежные вопросы