Вопрос формата даты PHP - PullRequest
0 голосов
/ 24 июля 2010

Некоторые люди помогли мне Как проверить формат данных в PHP пост, но мне нужно проверить два формата даты ММ-ДД-ГГГГ и ДД-ММ-ГГ вместо одного. Нужно ли настроить два регулярных выражения ???? Спасибо за помощь !!!

$date1=05/25/2010;    
$date2=25/05/10;    //I wish both of them would pass 

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

if (preg_match($date_regex, $date1)) {
  do something    
}

if (preg_match($date_regex, $date2)) {  // need second Reg. expression??
  do something    
}

1 Ответ

3 голосов
/ 24 июля 2010

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

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

соответствует формату ММ-ДД-ГГГГ.

Другой, который вы хотите сопоставить, прост

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

Вы можете просто проверитьлибо это правда.

if(preg_match($date_regex,$date) or preg_match($date_regex2,$date)){
  //match
}

Или вы можете объединить их, используя

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

if(preg_match($regex,$date){
  //match
}

Не самое элегантное регулярное выражение, но оно отлично работает.

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