Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > регулярное выражение


Автор: GrafF812 17.3.2010, 18:43
здавтствуйте, помогите составить регулярное выражение, мне нужно проверить на соответсвие два вида шифров:
1) 
Код

$code1 = "ММР90-01-001-01"

и
2)
Код

$code2 = "9887-987"

нужно чтобы коды были именно в такой последовательности, т.е
в первом случае в коде должно быть 3 русские буквы затем сразу после них 2 цифры, затем минус, затем две цыфры и т.д.
во втором соответственно 4 цифры, затем минус, затем 3 цифры.
В общем случае мне нужно чтобы эти коды строго соответствовали этому формату. Спасибо! 

Автор: bars80080 17.3.2010, 20:03
Код

/^[А-Я]{3}[0-9]{2}-[0-9]{3}-[0-9]{2}$/

/^[0-9]{4}-[0-9]{3}$/

наверно так

Автор: GrafF812 17.3.2010, 21:25
bars80080, спасибо. я именно так и делал, но почему-то если проверяю строку такого вида:
Код

$code3 = "ММРз90-01-001-01"

то она тоже удовлетворяет первому шаблону (хотя не должна т.к требуется только 3 первых символа)

Автор: bars80080 18.3.2010, 12:06
может так

Код

/^([А-Я]){3}([0-9]){2}-([0-9]){3}-([0-9]){2}$/
/^([0-9]){4}-([0-9]){3}$/


?

ну и можно просто повторить
[0-9][0-9]... нужное число раз

Автор: GrafF812 18.3.2010, 17:46
bars80080,  + Спасибо Вам большое все получилось, подскажите последний вопрос, мне нужно написать регулярное выражение для проверки на правильность формата сразу двух видов кодов такого вида:
Код

$code1 = "7564-8574";
$code2 = "7364-8578-76";

Автор: bars80080 18.3.2010, 18:02
Код

/^([0-9]){4}-([0-9]){3}(-([0-9]){2}){0,1}$/

может так?

Автор: patap 18.3.2010, 18:54
Код
^\d{4}-\d{4}(-\d{2})?$

Автор: GrafF812 18.3.2010, 21:06
спасибо, поясните пожалуйста:
1) \d означает целое число от 0 до 9 ?
2) Что обозначает символ '?' в части (-\d{2})?

Автор: patap 18.3.2010, 22:50
1. \d - одиночная цифра
2. ? - это тоже самое, что {0,1} - может быть может не быть. 
    -\d{2}  -  это соответствует выделенной части 7364-8578-76. Взяли его в скобки (-\d{2}), чтобы сгрупировать. И добавили ?, чтобы указать, что данная группа может как быть, так и не быть

Автор: GrafF812 19.3.2010, 00:01
patap, Спасибо Вам большое за помошь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)