Conseils pratiques et pièges pour valider des saisies comme l'e-mail, le téléphone ou le code postal avec des expressions régulières.
Dans la validation de formulaire, les expressions régulières conviennent bien aux saisies au format régulier. Pour vérifier que la chaîne entière correspond au format, il faut fixer les deux extrémités avec ^ et $. Sans ancres, la validation réussit même si seule une partie de la chaîne correspond, et le contrôle est contourné. La même expression régulière peut d'ailleurs être utilisée telle quelle dans l'attribut input pattern du HTML.
Les valeurs dont le nombre de chiffres et le type de caractères sont fixés, comme les numéros de téléphone, les codes postaux ou les identifiants, se contentent de classes de caractères et de quantificateurs. Toutefois, une règle trop restrictive bloque des variantes valides comme les numéros internationaux, les nouveaux systèmes de codes postaux ou la présence ou l'absence de tirets. Examinez d'abord la diversité des données réelles.
Ne cherchez pas à valider parfaitement une adresse e-mail avec une expression régulière. La spécification officielle (RFC 5322) est bien trop complexe pour être reproduite par une expression régulière d'usage courant. Contentez-vous de vérifier de façon souple la présence d'un @ et d'un point, et validez la véritable exactitude par l'envoi d'un e-mail de confirmation, comme il se doit.
La validation par expression régulière dans le navigateur ne sert qu'au confort de l'utilisateur (UX) ; ce n'est pas la dernière ligne de défense. Revalidez impérativement côté serveur et, pour les saisies non fiables, méfiez-vous du backtracking catastrophique (ReDoS) (voir l'article sur la performance dans les ressources).