« À chaque fois que je dois valider un e-mail, extraire des URL ou correspondre des numéros de téléphone, je dois écrire une regex de zéro ou chercher des réponses obsolètes sur Stack Overflow. Existe-t-il une collection de motifs courants à copier-coller ? »
Cet article réunit 10 motifs regex les plus fréquemment utilisés en pratique, chacun avec des explications détaillées, des cas d'usage et des exemples de test. Collez-les directement dans Suried Regex Tester pour les valider et comprendre leur comportement avant utilisation.
01 1. Validation d'adresse e-mail
Motif : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Ce motif correspond au format standard d'adresse e-mail. La partie nom d'utilisateur accepte lettres, chiffres, points, tirets bas, pourcents, plus et tirets. La partie domaine accepte lettres, chiffres, points et tirets, avec un domaine de premier niveau d'au moins 2 lettres.
Remarque : une regex parfaite pour les e-mails n'existe pas (la spécification RFC 5322 est extrêmement complexe). Ce motif couvre 99 % des formats d'e-mails réels et offre le meilleur compromis pratique. Pour une validation stricte, confirmez en envoyant un e-mail de vérification.
02 2. Correspondance d'URL
Motif : https?:\/\/[\w.-]+(?:\.[a-zA-Z]{2,})(?:\/[\w./?#&=%-]*)*
Correspond aux URL commençant par http:// ou https://. Supporte les sous-domaines, chemins, paramètres de requête et ancres. Idéal pour extraire des liens depuis du texte.
Pour correspondre aussi aux URL sans protocole (comme www.example.com), modifiez le début en (?:https?:\/\/)?(?:www\.)?.
03 3. Correspondance de numéros de téléphone
Motif mobile chinois : ^1[3-9]\d{9}$
Les numéros de mobile chinois commencent par 1, le deuxième chiffre est 3–9, suivi de 9 autres chiffres (11 au total). Ce motif concis couvre toutes les plages de numéros d'opérateurs actuels.
Les numéros internationaux sont plus complexes : ^\+?[1-9]\d{1,14}$ (standard E.164, jusqu'à 15 chiffres incluant le code pays). Pour les formats avec tirets ou espaces comme +1-234-567-8900, ajustez à ^\+?\d{1,3}[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}$.
04 4-5. Formats de date et adresses IP
Format de date AAAA-MM-JJ : ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$. Les mois sont limités à 01-12, les jours à 01-31. Remarque : ce motif ne valide pas la logique mois-jour (ex. le 31 février passe) ; une validation complète nécessite une logique de code supplémentaire.
Adresse IPv4 : ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$. Chaque octet est limité à 0-255, plus précis qu'un simple \d{1,3}\. — ne correspondra pas à des adresses invalides comme 999.999.999.999.
IPv6 peut aussi être matché par regex, mais le motif est extrêmement complexe (gestion des formes compressées), donc l'utilisation d'une bibliothèque d'analyse IP dédiée est généralement recommandée.
05 6-7. Caractères chinois et balises HTML
Correspondance des caractères chinois : /\p{Script=Han}/u (recommandé) ou [\u4e00-\u9fa5] (traditionnel). La correspondance de propriétés Unicode est plus précise, couvrant tous les blocs d'extension. Pour correspondre aussi à la ponctuation chinoise, étendez avec [\u3000-\u303f\uff00-\uffef].
Correspondance des balises HTML : <\/?[a-zA-Z][a-zA-Z0-9]*(?:\s[^>]*)?\/?>. Correspond aux balises ouvrantes, fermantes et auto-fermantes. Mais attention : parser du HTML avec une regex n'est pas une bonne idée ! Le HTML a de l'imbrication, des commentaires, du CDATA et d'autres structures complexes. La regex ne convient que pour l'extraction ou le nettoyage simple de balises ; le vrai parsing HTML doit utiliser un parseur DOM.
La célèbre réponse de Stack Overflow : ne parsez pas le HTML avec des regex. Mais pour la recherche-remplacement rapide ou l'analyse de logs dans des scénarios non critiques, la correspondance regex de balises HTML reste la solution la plus pratique.
06 8-10. Extensions de fichiers, force du mot de passe et nettoyage des espaces
Extraction d'extension de fichier : \.([a-zA-Z0-9]+)$. Extrait l'extension à la fin d'un nom de fichier. Le groupe de capture 1 contient l'extension sans le point. Pour des extensions spécifiques uniquement : \.(jpg|jpeg|png|gif|webp)$ (correspond aux formats d'image courants).
Validation de la force du mot de passe : ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$. Utilise quatre assertions lookahead assurant minuscule, majuscule, chiffre et caractère spécial, minimum 8 caractères. Chaque assertion vérifie indépendamment une condition — une approche élégante de « toutes les conditions doivent être remplies simultanément ».
Nettoyage des espaces blancs — supprimer début/fin : ^\s+|\s+$ (remplacer par chaîne vide). Fusionner les espaces multiples : \s{2,} (remplacer par un seul espace). Supprimer les lignes vides : ^\s*$\n (remplacer par chaîne vide). Ces trois motifs sont extrêmement fréquents en traitement de texte et nettoyage de données.
FAQ
Puis-je utiliser ces motifs regex directement dans mes projets ?
Oui, mais nous recommandons de tester d'abord avec vos données réelles dans Suried Regex Tester pour s'assurer que les correspondances sont conformes aux attentes. Différents projets peuvent avoir des variations de format nécessitant des ajustements. Ce sont des points de départ validés, pas des solutions universelles finales.
Pourquoi la regex d'e-mail ne peut-elle pas être 100 % précise ?
Parce que la RFC 5322 autorise des formats d'e-mail inattendus comme "quoted string"@example.com et postmaster@[123.123.123.123]. Une regex entièrement conforme à la RFC ferait des milliers de caractères et serait totalement impraticable. En pratique, une regex concise pour la vérification basique + l'envoi d'un e-mail de vérification est la meilleure approche.
La regex de force du mot de passe est-elle suffisante pour la validation de sécurité ?
La regex ne peut valider que la « complexité de format » du mot de passe (s'il contient différents types de caractères), pas s'il est réellement sûr. « Password1! » satisfait toutes les exigences de format mais est extrêmement faible. La vraie sécurité des mots de passe nécessite de vérifier les bases de données de mots de passe courants (comme HaveIBeenPwned) et d'implémenter des exigences d'entropie minimale.
Comment correspondre à la fois au chinois et à l'anglais en regex ?
Utilisez [\p{Script=Han}a-zA-Z] avec le drapeau u pour correspondre à la fois aux caractères chinois et anglais. Pour inclure les chiffres : [\p{Script=Han}\w]. Pour des paragraphes de texte mixte chinois-anglais : [\p{Script=Han}\w\s.,!?]+.
127.0.0.1 et 0.0.0.0 sont-ils des adresses valides lors de la correspondance regex ?
Structurellement, ce sont des adresses IPv4 valides qui seront capturées par la regex. Mais en réseau réel, 127.0.0.1 est l'adresse de bouclage (localhost) et 0.0.0.0 est l'adresse générique. Si vous devez exclure ces adresses spéciales, filtrez-les par logique de code après la correspondance regex.
Try the Tool Now
Cet article réunit 10 motifs regex les plus fréquemment utilisés en pratique, chacun avec des explications détaillées, des cas d'usage et des exemples de test. Collez-les directement dans Suried Regex Tester pour les valider et comprendre leur comportement avant utilisation.