Prenez un motif comme point de départ puis testez-le dans votre moteur. Un format reconnu ne prouve pas la validité d’une adresse, d’une date ou d’un compte.
Fonctionne localement dans votre navigateur| Cas d'utilisation | Expression régulière | Remarques |
|---|---|---|
| Adresse e-mail | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
Vérification pratique de la syntaxe ; la livraison nécessite une vérification. |
| HTTP ou HTTPS URL | ^https?:\/\/[^\s]+$ |
Vérifie le schéma et rejette les espaces ; utilisez un analyseur URL pour une validation complète. |
| Adresse IPv4 | ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$ |
Accepte les octets de 0 à 255. |
| UUID versions 1 à 5 | ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ |
Vérifie la forme avec trait d'union standard et les bits de variantes RFC. |
| Date de style ISO | ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ |
Vérifie la forme AAAA-MM-JJ, et non les limites de jours spécifiques au mois. |
| Temps de 24 heures | ^(?:[01]\d|2[0-3]):[0-5]\d$ |
Accepte les valeurs de 00h00 à 23h59. |
| Couleur hexagonale | ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$ |
Prend en charge les notations RVB, RRGGBB et RRGGBBAA. |
| Version sémantique | ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ |
Correspond aux versions principales ainsi qu'aux métadonnées facultatives de version préliminaire et de build. |
| Entier signé | ^-?\d+$ |
Permet un signe moins facultatif. |
| Nombre décimal | ^-?(?:\d+|\d*\.\d+)$ |
Accepte les entiers et les fractions décimales, y compris les valeurs telles que 0,5. |
| Limace URL | ^[a-z0-9]+(?:-[a-z0-9]+)*$ |
Mots ASCII minuscules séparés par des tirets simples. |
| Balise de type HTML | <\/?[A-Za-z][^>]*> |
Utile pour une extraction simple uniquement ; analyser HTML avec un analyseur HTML. |
| Espaces de début ou de fin | ^\s+|\s+$ |
Utilisez l'indicateur global lors de la suppression des espaces aux deux extrémités. |
| Ligne vide | ^\s*$ |
Utilisez le mode multiligne pour évaluer chaque ligne séparément. |
| Mot adjacent répété | \b([A-Za-z]+)\s+\1\b |
Utilisez le mode insensible à la casse si les majuscules doivent être ignorées. |
JavaScript, PCRE, Python, Java, .NET, Go et Ruby n'implémentent pas exactement les mêmes fonctionnalités d'expression régulière. Vérifiez le moteur cible avant de vous fier au lookbehind, aux groupes nommés, aux propriétés Unicode, aux quantificateurs possessifs ou aux modificateurs en ligne.
Pour une validation sensible à la sécurité, normalisez d'abord l'entrée, appliquez des limites de longueur explicites et utilisez un analyseur dédié chaque fois que le format de données en possède un.
Quinze motifs prêts à l'emploi pour les valeurs qu'un formulaire, une ligne de journal ou un fichier de configuration doit souvent contrôler : adresse e-mail, URL HTTP ou HTTPS, adresse IPv4, UUID versions 1-5, date au format ISO, heure sur 24 heures, couleur hexadécimale, version sémantique, entier signé, nombre décimal, slug d'URL, balise de type HTML, espaces de début ou de fin, ligne vide et mot adjacent répété.
Le tableau est toute la page : aucun champ de saisie, rien à exécuter. Chaque ligne indique ce que son motif vérifie et ce qu'il laisse passer, car reconnaître un format ne revient pas à valider une donnée réelle. La ligne de date accepte 2024-02-31 et la ligne e-mail ne peut pas savoir si une adresse reçoit du courrier : prenez donc un motif comme point de départ et testez-le dans le moteur qui l'exécutera.
La ligne IPv4 accepte 0.0.0.0 et 255.255.255.255 et refuse 256.1.1.1, 1.2.3 et 1.2.3.4.5. La ligne UUID exige la forme avec traits d'union, un chiffre de version de 1 à 5 et un quartet de variante RFC égal à 8, 9, a ou b : les identifiants de version 6 et 7 ne correspondent donc pas. La ligne de version sémantique accepte 1.0.0, 1.0.0-alpha.1 et 1.0.0+build.1, alors que v1.0.0 et 01.0.0 échouent.
Plusieurs lignes sont volontairement souples. 2024-02-31 passe la ligne de date parce que le motif ignore la longueur des mois, et 2024-13-01 échoue. La ligne d'heure attend deux chiffres : 09:30 correspond, 9:30 non. La ligne d'entier refuse +5, celle de décimal accepte .5 et refuse 5., et celle de slug n'autorise qu'un trait d'union simple et des minuscules.
Le filtre lit la ligne entière, pas seulement son titre : « octet » retrouve la ligne IPv4 par sa note, « ^https » retrouve la ligne URL par le motif lui-même et « blank » la ligne vide. Le compteur rappelle toujours le total de 15, la touche Échap vide le champ lorsqu'il a le focus et le bouton Effacer fait de même sur un écran tactile.
Le bouton de la ligne copie uniquement l'expression régulière, ancres comprises et sans guillemets ajoutés : le résultat peut rejoindre directement du code source, un fichier de test ou une règle de validation. Le cas d'usage et la note restent sur la page : ce sont des repères, pas une partie du motif.
Trois lignes ne remplissent leur rôle qu'avec les bonnes options : la ligne des espaces de début ou de fin a besoin de l'option globale pour rogner les deux extrémités, celle des lignes vides du mode multiligne pour que ^ et $ s'évaluent par ligne, et celle des mots répétés de l'option insensible à la casse pour lire « The the » comme une répétition.
La vraie limite reste la portabilité. Lookbehind, groupes nommés, propriétés Unicode et quantificateurs possessifs ne sont pas implémentés de la même façon en JavaScript, PCRE, Python, Java, .NET, Go et Ruby, et un motif repris de cette page hérite des hypothèses de son moteur d'origine. Consultez la documentation du moteur cible et gardez l'expression dans un test qui s'exécute sur les chaînes que votre service rencontre réellement.