Je ne suis pas très bon avec regex. Je suis frustré par une expression régulière.
Exemple:
J’ai l’heure de la date suivante: 05/16/2013 12:00 am
J’ai besoin d’un regex javascript qui respecte ce format: mm / jj / aaaa hh: mm [am / pm]
var dateReg = /^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/; if(!dateReg.test(inputVal)) { $(this).after('Invalid date format.'); }
Mais ce code ne fonctionne que pour la date, pas avec l’heure. Merci de votre aide.
Votre extrait de code ne correspond qu’à la date, il n’y a pas d’atomes pour correspondre à l’heure. Votre expression rationnelle devrait être:
dateReg = /^[0,1]?\d\/(([0-2]?\d)|([3][01]))\/((199\d)|([2-9]\d{3}))\s[0-2]?[0-9]:[0-5][0-9] (am|pm)?$/
Une expression rationnelle pour am / pm time peut être trouvée ici :
/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/
Vous ne devriez pas parsingr les dates et les heures vous-même. Trouvez une bonne bibliothèque pour le faire. d3.js prend en charge de manière précise l’parsing des dates et des heures en fonction des formats que vous spécifiez. Voir https://github.com/mbostock/d3/wiki/Time-Formatting .