20 motifs regex courants que tout développeur devrait connaßtre
20 motifs regex courants que tout développeur devrait connaßtre
Les regex rĂ©solvent de vrais problĂšmes : validation d'entrĂ©es, extraction de donnĂ©es et transformation de chaĂźnes. Ce guide prĂ©sente 20 expressions rĂ©guliĂšres prĂȘtes Ă l'emploi couvrant les tĂąches de traitement de texte les plus courantes. Chaque motif inclut une explication de ce qu'il fait correspondre.
1. Adresse e-mail
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
La partie locale autorise les lettres, les chiffres, les points et les caractÚres spéciaux. Le domaine autorise les lettres, les chiffres et les points. Le TLD doit comporter au moins deux lettres.
2. URL
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z]{2,}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)
Correspond aux URL HTTP/HTTPS avec www optionnel, nom de domaine, TLD, chemin et chaĂźne de requĂȘte.
3. Numéro de téléphone américain
^\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})$
Correspond Ă (555) 123-4567, 555-123-4567, 555.123.4567 et 5551234567.
4. Téléphone international
^\+?(\d{1,3})\s?[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}$
Motif permissif pour les numéros internationaux avec indicatifs de pays.
5. Mot de passe fort
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Exige 8 caractÚres ou plus, une minuscule, une majuscule, un chiffre et un caractÚre spécial. Utilise des assertions de regard en avant (lookahead).
6. Date (AAAA-MM-JJ)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Format ISO 8601. Mois 01-12, jour 01-31. Ne valide pas les limites propres à chaque mois (le 30 février passe).
7. Date (MM/JJ/AAAA)
^(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])\/\d{4}$
Format américain avec barres obliques.
8. Heure (HH:MM sur 24 heures)
^([01]\d|2[0-3]):[0-5]\d$
Heures 00-23, minutes 00-59.
9. Adresse IPv4
^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$
Quatre octets. Pour une validation stricte (0-255), remplacez \d{1,3} par (25[0-5]|2[0-4]\d|[01]?\d\d?).
10. Adresse IPv6
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
IPv6 complet avec 8 groupes de chiffres hexadécimaux. Ne gÚre pas l'abréviation ::.
11. Adresse MAC
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Séparée par deux-points ou traits d'union.
12. Code couleur hexadécimal
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
Ă 3 chiffres (#fff) ou 6 chiffres (#ffffff), insensible Ă la casse.
13. Numéro de carte bancaire
^\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}$
16 chiffres avec séparateurs optionnels. Ne valide pas la somme de contrÎle Luhn.
14. Code postal américain (ZIP)
^\d{5}(-\d{4})?$
12345 ou 12345-6789.
15. Nom d'utilisateur
^[a-zA-Z0-9_]{3,16}$
3 Ă 16 caractĂšres, uniquement lettres, chiffres et traits de soulignement.
16. Slug d'URL
^[a-z0-9-]+$
Lettres minuscules, chiffres et traits d'union. Courant dans les systĂšmes CMS.
17. Balise HTML
<\/?[\w\s]*>|<.+[\w\s]*>
Correspond aux balises ouvrantes et fermantes. Ne convient pas au HTML imbriqué.
18. Extension de fichier
\.([a-zA-Z]{2,})$
Extrait l'extension sans le point.
19. Normalisation des espaces
\s+
Réduit plusieurs espaces, tabulations ou sauts de ligne en un seul.
20. Extraire des nombres
-?\d+(\.\d+)?
Entiers et décimaux, y compris les nombres négatifs.
Conseils de performance
- Soyez prĂ©cis â Ă©vitez
.*qui peut provoquer un retour arriĂšre catastrophique. - Ancrez avec
^et$pour limiter la zone de recherche. - Testez les cas limites : chaßnes vides, chaßnes longues, caractÚres spéciaux.
Testez ces motifs en ligne
Utilisez l'outil de test d'expressions réguliÚres pour expérimenter avec ces motifs. Collez n'importe quelle expression, saisissez un texte d'exemple et voyez les correspondances mises en évidence en temps réel. L'outil affiche les groupes de capture et aide à déboguer les motifs avant de les utiliser.