2010-07-24 2 views
0

Я работаю над своим регулярным выражением даты весь день ... Я хочу, чтобы формат даты был YYYY-MM-DD.Дата регулярного выражения дает ошибку

$date_regex ='^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$'; 

if (preg_match($date_regex, $dateString)) { 
     echo "good format"; 
    } 

продолжает давать мне ошибку

preg_match() [function.preg-матчевую]: Нет окончания разделителей '^' найдено в test.php в строке 19

кто поможет ?? Большое спасибо!!

ответ

1

Вам необходимо обернуть ваше регулярное выражение в пару разделительных символов. Кроме того, вам нужно избегать тире в ваших классах символов, используя \.

Попробуйте это (я использую # в качестве разделителя):

$date_regex ='#^(19|20)\d\d[\- /.](0[1-9]|1[012])[\- /.](0[1-9]|[12][0-9]|3[01])$#'; 
1

Вы должны включить/с в противном случае регулярное выражение думает, что вы ограничиваете его с^

'/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/' 

С уважением

+0

AAh BoltClock избил меня до него и дал лучший ответ на загрузку: p –

+1

Если вы используете '/', вам нужно избежать других '/' s в регулярном выражении, чтобы PHP не заканчивал регулярное выражение преждевременно. В частности, в классах символов (escape-тире тоже): [\ - \ /.] – BoltClock

+0

также попытался выделить живые/с, но бит кода не забрал их: s –