Ranges and negationPlages et négation
Ranges of characters
Listing twenty-six letters one by one would be absurd. Inside a class, the hyphen defines a range, a continuous run of characters:
/[a-z]/→ any lowercase letter from a to z;/[A-Z]/→ any uppercase letter;/[0-9]/→ any digit;/[a-zA-Z0-9]/→ a letter or a digit.
Several ranges fit inside the same brackets, and mix with individual
characters: [a-zA-Z0-9_-] accepts letters, digits, underscore and hyphen.
[a-zA-Z].[a-zA-Z].Bonjour123 monde! Les cafés coûtent 5$ ici. @test #hashtag _underscoreBonjour123 monde! Les cafés coûtent 5$ ici. @test #hashtag _underscore B o n j o u r m o n + 39 more+ 39 autres B o n j o u r m o n + 39 more+ 39 autres a1 b2 c3 d4 e5 f6 a4 d1 z9 A1 B2a1 b2 c3 d4 e5 f6 a4 d1 z9 A1 B2 a1 b2 c3 a1 b2 c3 Call me at 514-555-1234 or write to P.O. Box 123-45 before 2024-12-31. My code is 99-8877. Invalid numbers: 51-555-1234 or 514-55-1234.Appelez-moi au 514-555-1234 ou écrivez au C.P. 123-45 avant le 2024-12-31. Mon code est 99-8877. Numéro invalide: 51-555-1234 ou 514-55-1234. 514-555-1234 514-555-1234 Contact: 514-555-1234 or 438.555.6789. Date: 2024.01.15. Code: 12-34-56.Contact : 514-555-1234 ou 438.555.6789. Date : 2024.01.15. Code : 12-34-56. 514-555-1234 438.555.6789 514-555-1234 438.555.6789 Negation: [^…]
A caret in first position inside a class inverts the selection: the class then matches any character EXCEPT those listed.
/[^aeiou]/→ any character other than a lowercase vowel;/[^0-9]/→ any character that is not a digit.
Negation is mostly how you describe what you cannot describe otherwise: “anything but a closing quote”, “anything but an angle bracket”, which is the basis of every pattern for tags tagbalise markupbalisage A marker that delimits and identifies an element in a markup document, usually working as a pair: an opening tag and a closing tag around the content they label.Marqueur qui délimite et identifie un élément dans un document balisé, fonctionnant généralement par paire : une balise ouvrante et une balise fermante autour du contenu qu'elles désignent. .
[a-zA-Z] does not cover them.[a-zA-Z] ne les couvre pas.Hello! Comment ça va? Très bien, merci. Prix: 25$ et 30€. Email: test@mail.comHello! Comment ça va? Très bien, merci. Prix: 25$ et 30€. Email: test@mail.com ! ç ? è , . : $ € . + 3 more+ 3 autres ␣ space · ⇥ tab · ⏎ line break · ◆ empty match␣ espace · ⇥ tabulation · ⏎ retour à la ligne · ◆ correspondance vide ! ç ? è , . : $ € . + 3 more+ 3 autres ␣ space · ⇥ tab · ⏎ line break · ◆ empty match␣ espace · ⇥ tabulation · ⏎ retour à la ligne · ◆ correspondance vide Plages de caractères
Lister les vingt-six lettres une par une serait absurde. Dans une classe, le tiret définit une plage, une séquence continue de caractères :
/[a-z]/→ toute lettre minuscule de a à z ;/[A-Z]/→ toute lettre majuscule ;/[0-9]/→ tout chiffre ;/[a-zA-Z0-9]/→ lettre ou chiffre.
Plusieurs plages tiennent dans les mêmes crochets, et se mélangent avec des
caractères isolés : [a-zA-Z0-9_-] accepte lettres, chiffres, trait de
soulignement et trait d’union.
[a-zA-Z].[a-zA-Z].Bonjour123 monde! Les cafés coûtent 5$ ici. @test #hashtag _underscoreBonjour123 monde! Les cafés coûtent 5$ ici. @test #hashtag _underscore B o n j o u r m o n + 39 more+ 39 autres B o n j o u r m o n + 39 more+ 39 autres a1 b2 c3 d4 e5 f6 a4 d1 z9 A1 B2a1 b2 c3 d4 e5 f6 a4 d1 z9 A1 B2 a1 b2 c3 a1 b2 c3 Call me at 514-555-1234 or write to P.O. Box 123-45 before 2024-12-31. My code is 99-8877. Invalid numbers: 51-555-1234 or 514-55-1234.Appelez-moi au 514-555-1234 ou écrivez au C.P. 123-45 avant le 2024-12-31. Mon code est 99-8877. Numéro invalide: 51-555-1234 ou 514-55-1234. 514-555-1234 514-555-1234 Contact: 514-555-1234 or 438.555.6789. Date: 2024.01.15. Code: 12-34-56.Contact : 514-555-1234 ou 438.555.6789. Date : 2024.01.15. Code : 12-34-56. 514-555-1234 438.555.6789 514-555-1234 438.555.6789 La négation : [^…]
L’accent circonflexe en première position d’une classe inverse la sélection : la classe correspond alors à tout caractère SAUF ceux qui sont listés.
/[^aeiou]/→ tout caractère sauf une voyelle minuscule ;/[^0-9]/→ tout caractère qui n’est pas un chiffre.
La négation sert surtout à décrire ce qu’on ne sait pas décrire autrement : « tout sauf un guillemet fermant », « tout sauf un chevron », qui sont la base des motifs de balises tagbalise markupbalisage A marker that delimits and identifies an element in a markup document, usually working as a pair: an opening tag and a closing tag around the content they label.Marqueur qui délimite et identifie un élément dans un document balisé, fonctionnant généralement par paire : une balise ouvrante et une balise fermante autour du contenu qu'elles désignent. .
[a-zA-Z] does not cover them.[a-zA-Z] ne les couvre pas.Hello! Comment ça va? Très bien, merci. Prix: 25$ et 30€. Email: test@mail.comHello! Comment ça va? Très bien, merci. Prix: 25$ et 30€. Email: test@mail.com ! ç ? è , . : $ € . + 3 more+ 3 autres ␣ space · ⇥ tab · ⏎ line break · ◆ empty match␣ espace · ⇥ tabulation · ⏎ retour à la ligne · ◆ correspondance vide ! ç ? è , . : $ € . + 3 more+ 3 autres ␣ space · ⇥ tab · ⏎ line break · ◆ empty match␣ espace · ⇥ tabulation · ⏎ retour à la ligne · ◆ correspondance vide Sources
- MDN Web Docs (n.d.). Regular expressions. MDN JavaScript Guide, Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
Sources
- MDN Web Docs (n.d.). Regular expressions. MDN JavaScript Guide, Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions