Je viens d'hériter d'un projet avec beaucoup de validation côté client. Dans ce cas, j'ai trouvé un vérificateur d'expressions rationnelles, comme prévu sans un commentaire en vue. J'admets que regex est définitivement l'un de mes points faibles. (En JavaScript!)Comment fonctionne cette fois Regex?
var myRegxp = /(([0]*[1-9]{1})|([1]{1}[0-2]{1}))(\/{1})((19[0-9]{2})|([2-9]{1}[0-9]{3}))$/;
if (!myRegxp.test(args.Value))
{//do fail stuff here};
Je suis assez sûr du reste de la page qu'il est censé être vérifier pour une sorte de format de date. Cela passerait-il MM/AAAA? De certains tests précoces, il presque le fait.
Si cette expression rationnelle ne correspond pas à MM/YYYY, quelle serait la meilleure façon de procéder?
Un conseil des maîtres regex serait apprécié.
En note: '[1-9] {1}' est équivalent à '[1-9]'. Ce dernier est préféré (par beaucoup) parce qu'il encombre moins la regex. La même chose vaut pour '[0] *' étant équivalent à '0 *' et '[1] {1}' est juste '1'. –
Enfin, l'OR logique, '|', a une priorité très faible. En d'autres termes, vous n'avez pas besoin d'entourer 'AA' et' BB' entre parenthèses dans ce cas: '((AA) | (BB)) CC'. Vous pouvez simplement faire: '(AA | BB) CC'.Cela, et mes remarques précédentes, faites votre regex actuelle: '(([0] * [1-9] {1}) | ([1] {1} [0-2] {1})) (\/{ 1}) ((19 [0-9] {2}) | ([2-9] {1} [0-9] {3})) $ 'exactement la même chose que' (0 * [1-9] | 1 [0-2]) \/(19 [0-9] {2} | [2-9] [0-9] {3}) $ ' –
Grande note chez Bart K. +1 – Kamal