Les expressions régulières, ou regex, sont des motifs qui permettent de rechercher, de correspondre et de manipuler des chaînes de caractères de manière très puissante. Elles sont utilisées pour valider des entrées, rechercher des modèles spécifiques, et remplacer des parties de texte dans les chaînes. Voici comment fonctionnent les expressions régulières et comment les utiliser en JavaScript.
Les expressions régulières sont généralement placées entre deux barres obliques (/), comme ceci :
const regex = /pattern/;-
test(): Vérifie si une chaîne correspond à la regex.const regex = /\d{4}/; console.log(regex.test("1234")); // true
-
match(): Extrait les correspondances d'une chaîne.const text = "I have 123 apples"; console.log(text.match(/\d+/)); // ["123"]
-
replace(): Remplace les correspondances dans une chaîne.const text = "hello world"; console.log(text.replace(/world/, "there")); // "hello there"
-
.: Correspond à n'importe quel caractère sauf le saut de ligne././ // Correspond à n'importe quel caractère
-
\d: Correspond à un chiffre (0-9)./\d/ // Correspond à un chiffre (0-9)
-
\D: Correspond à tout sauf un chiffre./\D/ // Correspond à tout sauf un chiffre
-
\w: Correspond à un caractère alphanumérique (lettres, chiffres, ou _)./\w/ // Correspond à un caractère alphanumérique
-
\W: Correspond à tout sauf un caractère alphanumérique./\W/ // Correspond à tout sauf un caractère alphanumérique
-
\s: Correspond à un espace blanc (espace, tabulation, saut de ligne)./\s/ // Correspond à un espace blanc
-
\S: Correspond à tout sauf un espace blanc./\S/ // Correspond à tout sauf un espace blanc
-
+: Correspond à une ou plusieurs occurrences du caractère ou motif précédent./\d+/ // Correspond à une ou plusieurs occurrences de chiffres
-
*: Correspond à zéro ou plusieurs occurrences./a*/ // Correspond à zéro ou plusieurs occurrences de "a"
-
?: Correspond à zéro ou une occurrence./a?/ // Correspond à zéro ou une occurrence de "a"
-
{n}: Correspond exactement à n occurrences du motif précédent./\d{4}/ // Correspond exactement à 4 chiffres
-
{n,}: Correspond à au moins n occurrences./\d{2,}/ // Correspond à au moins 2 chiffres
-
{n,m}: Correspond à entre n et m occurrences./\d{2,5}/ // Correspond à entre 2 et 5 chiffres
-
^: Correspond au début de la chaîne./^a/ // Correspond à "a" au début de la chaîne
-
$: Correspond à la fin de la chaîne./a$/ // Correspond à "a" à la fin de la chaîne
-
|: Correspond à l'un ou l'autre des motifs (OU logique)./a|b/ // Correspond à "a" ou "b"
Une classe de caractères permet de spécifier un ensemble de caractères parmi lesquels une correspondance peut être trouvée.
-
[abc]: Correspond à l'un des caractères dans la classe./[aeiou]/ // Correspond à une voyelle
-
[^abc]: Correspond à tout sauf les caractères dans la classe./[^0-9]/ // Correspond à tout sauf un chiffre
-
[a-z]: Correspond à une plage de caractères (ici, de "a" à "z")./[a-z]/ // Correspond à une lettre minuscule
-
(...): Un groupe capture les correspondances en bloc./(abc)/ // Correspond à "abc"
-
(?:...): Groupe non capturant (utilisé pour regrouper sans capturer)./(?:abc)/ // Correspond à "abc", mais ne capture pas
const regex = /^\d{3}-\d{3}-\d{4}$/;
console.log(regex.test("123-456-7890")); // true
console.log(regex.test("1234567890")); // falseconst regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(regex.test("test@example.com")); // true
console.log(regex.test("test@example")); // falseconst text = "Hello world! How are you?";
const result = text.replace(/\s+/g, ' ');
console.log(result); // "Hello world! How are you?"- Commencez simple : Si vous êtes débutant, commencez par de petites expressions régulières, comme la recherche d'un caractère ou d'un nombre.
- Utilisez des outils en ligne : Des sites comme regex101.com ou regexr.com sont d'excellents outils pour tester et comprendre les expressions régulières.
- Utilisez les métacaractères à bon escient : Les métacaractères comme
^,$, et\bpeuvent être puissants pour spécifier les débuts, les fins, ou les limites des mots. - Évitez les regex trop complexes : Parfois, des solutions simples avec
split(),slice()ou des boucles sont plus lisibles et efficaces qu'une regex complexe.
Reprenons l'exemple du code PIN de votre exercice :
function validatePIN(pin) {
// La regex vérifie si le pin est composé de 4 ou 6 chiffres
return /^(\d{4}|\d{6})$/.test(pin);
}
console.log(validatePIN("1234")); // true
console.log(validatePIN("12345")); // false
console.log(validatePIN("a234")); // falseJ'espère que cette introduction aux regex vous aide à mieux comprendre leur fonctionnement ! Si vous avez besoin d'approfondir un aspect spécifique ou d'autres exemples, n'hésitez pas à me demander.