Проверьте, пожалуйста, правильно ли использую регексп

Spear

почемучка
Проверьте, пожалуйста, правильно ли использую регексп

Вот
if(!preg_match('/^[0-9]{2}[-][0-9]{4}$/',$d))

По идее если переменная $d

не является вида

10-2005

(месяц-год) то возвратит ошибку.
Правильно?
 

SiMM

Новичок
> ^[0-9]{2}[-][0-9]{4}$
Делать класс из одного символа нет никакой необходимости. А так - 99-0000 вполне схавается как верный
 

Spear

почемучка
SiMM
99-0000
такой вариант будет уже потом дальше в скрпите проверен,
главное чтобі не подставили что-то вроде
2088-97
 

SiMM

Новичок
> такой вариант будет уже потом дальше в скрпите проверен
1. Почему бы не сделать это сразу?
2. А зачем тогда вообще нужна ЭТА проверка регулярником, если достаточно того, что будет без него?
 

Spear

почемучка
SiMM
есть такое слово "нужно" ;) а на самом деле - просто из-за специфико кода, он довольно-таки сложный и объемый.

Ну в любом случае я так понял чот вышеприведенный регексп подходит?

попутно вопрос:

в .htacces при написании правил Rewite тоже можно использовать {NUM} чтобы указать какой длины переменная?
([0-9-]{10}) по идее (в реврайте) пропустит значение типа
16-12-2005 ?
 

SiMM

Новичок
> из-за специфико кода, он довольно-таки сложный и объемый.
Будешь продолжать в том же духе, нагромождая его излишествами - он будет ещё сложнее и объёмнее.

> в .htacces при написании правил Rewite тоже можно использовать {NUM} чтобы указать какой длины переменная?
Возьми да попробуй.
 

Spear

почемучка
SiMM
я пробую, вроде как работает.. но мало ли. Я и спрашиваю чтобы лишнего не писать.
 

SiMM

Новичок
> Я и спрашиваю чтобы лишнего не писать
Ну так и не пиши лишнего.
^(0[1-9]|1[0-2])-[0-9]{4}$ покроет все твои дальнейшие проверки?
 

Spear

почемучка
SiMM
Спасибо, наверное покроет ;) Только я непойму что значит эта часть:
(0[1-9]|1[0-2])
Тоесть
0[1-9] - то первое число от 1 до 9ти
1[0-2] - от 1 до 2ух?
я регексп, конечно, стараюсь учить, но вот это не пойму совсем :(
Буду рад объяснению, если не сложно.
 
Сверху