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 d e L e s c a f s c o t e n t i c i t e s t h a s h t a g u n d e r s c o r e B o n j o u r m o n d e L e s c a f s c o t e n t i c i t e s t h a s h t a g u n d e r s c o r e 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 ! ç ? è , . : $ € . : @ . ␣ space · ⇥ tab · ⏎ line break · ◆ empty match␣ espace · ⇥ tabulation · ⏎ retour à la ligne · ◆ correspondance vide ! ç ? è , . : $ € . : @ . ␣ 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 d e L e s c a f s c o t e n t i c i t e s t h a s h t a g u n d e r s c o r e B o n j o u r m o n d e L e s c a f s c o t e n t i c i t e s t h a s h t a g u n d e r s c o r e 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 ! ç ? è , . : $ € . : @ . ␣ space · ⇥ tab · ⏎ line break · ◆ empty match␣ espace · ⇥ tabulation · ⏎ retour à la ligne · ◆ correspondance vide ! ç ? è , . : $ € . : @ . ␣ 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