Module lessons (2/4)
Ranges inside classes: `[a-z0-9]`
Listing every character one by one is tedious. Classes accept ranges
with the hyphen -: [a-z] matches any lowercase letter, [0-9]
a digit, [A-Z] an uppercase letter.
Pattern: [a-z]+
Sample: Ciao Mondo 123
^^^ ^^^^The range uses code point order (essentially ASCII for Latin characters):
a-z means "every character from the code point of a to the code point of
z", so 26 letters.
Combining ranges
Inside a single class you can mix multiple ranges and individual characters:
[a-zA-Z0-9_] identical to \\w (in ASCII)
[a-fA-F0-9] hexadecimal digits
[0-9.] digits or the dot (for decimal numbers)Order does not matter: [0-9a-z] and [a-z0-9] are identical.
Ranges and ASCII character order
Ranges like [a-z] strictly follow the character order in the ASCII table. Writing an invalid range, such as [z-a], will trigger a regex compilation error. A literal dash should be placed at the start or end: [a-z-].
Try it
Find every hexadecimal sequence of 6 characters (e.g. the color code #1a2b3c). Digits go from 0 to 9, letters from a to f (uppercase or lowercase).
Show hint
Add A-F to the range, or use the i flag.
Solution available after 3 attempts
Review exercise
Find every product code made of 3 uppercase letters followed by 4 digits (e.g. ABC1234).
Show hint
For digits you can use \\d or the range [0-9]: this exercise requires explicit [0-9].
Solution available after 3 attempts
Additional challenge
Find hex characters in the text (digits 0-9 and letters A-F, both upper and lowercase).
Show hint
Combine three ranges: 0-9, a-f, A-F.
Solution available after 3 attempts