Regex
Normal Characters
Expression | Description |
---|---|
. or [^\n\r] | any character excluding a newline or carriage return |
[A-Za-z] | alphabet |
[a-z] | lowercase alphabet |
[A-Z] | uppercase alphabet |
\d or [0-9] | digit |
\D or [^0-9] | non-digit |
_ | underscore |
\w or [A-Za-z0-9_] | alphabet, digit or underscore |
\W or [^A-Za-z0-9_] | inverse of \w |
\S | inverse of \s |
Whitespace characters
Expression | Description |
---|---|
| space |
\t | tab |
\n | newline |
\r | carriage return |
\s | space, tab, newline or carriage return |
Character set
Expression | Description |
---|---|
[xyz] | either x , y or z |
[^xyz] | neither x , y nor z |
[1-3] | either 1 , 2 or 3 |
[^1-3] | neither 1 , 2 nor 3 |
- Think of a character set as an
OR
operation on the single characters that are enclosed between the square brackets. - Use
^
after the opening[
to “negate” the character set. - Within a character set,
.
means a literal period.
Quantifiers
Expression | Description |
---|---|
{2} | exactly 2 |
{2,} | at least 2 |
{2,7} | at least 2 but no more than 7 |
* | 0 or more |
+ | 1 or more |
? | exactly 0 or 1 |
- The quantifier goes after the expression to be quantified.
Matching
Expression | Description |
---|---|
foo\|bar | match either foo or bar |
foo(?=bar) | match foo if it’s before bar |
foo(?!bar) | match foo if it’s not before bar |
(?<=bar)foo | match foo if it’s after bar |
(?<!bar)foo | match foo if it’s not after bar |
Grouping and capturing
Expression | Description |
---|---|
(foo) | capturing group; match and capture foo |
(?:foo) | non-capturing group; match foo but without capturing foo |
(foo)bar\1 | \1 is a backreference to the 1st capturing group; match foobarfoo |
- Capturing groups are only relevant in the following methods:
string.match(regexp)
string.matchAll(regexp)
string.replace(regexp, callback)
\N
is a backreference to theNth
capturing group. Capturing groups are numbered starting from 1.