$date="28/02/08 13:53";
if($date =~ /^
(?:
(?:
(?:(?:[0-2][0-9]?)|(?:3[0-1]))
\/
(?:(?:0?[13578])|(?:1[02]))
)|
(?:(?:(?:[0-2][0-9]?)|30)\/(?:(?:0?[469])|11))
|
(?:
(?:
(?:[0-1][0-9]?)|2[0-8])\/(?:0?2)
)
)\/\d{2}(?:\d{2})?\s+(?:[0-1]?[0-9]|2[0-4]):(?:[0-5]?[0-9])$/x)
{
print "Date oK\n";
}
ou sa version 1 ligne:
/^(?:(?:(?:(?:[0-2][0-9]?)|(?:3[0-1]))\/(?:(?:0?[13578])|(?:1[02])))|Note: les années bissextiles ne sont pas prises en compte malheureusement...
(?:(?:(?:[0-2][0-9]?)|30)\/(?:(?:0?[469])|11))|(?:(?:(?:[0-1][0-9]?)|
2[0-8])\/(?:0?2)))\/\d{2}(?:\d{2})?\s+(?:[0-1]?[0-9]|2[0-4]):(?:[0-5]?[0-9])$/x
if( preg_match("/^(\d\d?)\/(\d\d?)\/((?:\d\d){1,2})/",$mdate))
{
echo "la date est correcte";
}
Exemple d'utilisation Perl:if($mdate=~ /^(\d\d?)\/(\d\d?)\/((?:\d\d){1,2})/)
{
print "la date est correcte";
}
le 28/06/08 23:38:12
A quoi servent tous ces (?:MOTIF) ?
le 01/07/08 10:33:55
à grouper sans capturer, mais je pense que tu le sais déjà. Je ne voulais pas utilise de parenthèses "capturantes" pour, au besoin, ne capturer vraiment que ce dont j'ai besoin.
le 01/07/08 19:59:15
En fait, ma question était surtout: pourquoi as-tu besoin de regrouper autant ?
le 02/07/08 17:34:40
pour les "ou". Je ne sais pas si cela marcherait "aussi bien" sans. une idée de comment s'en passer?