Character set
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.
| 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 |
Characters that require escaping
Outside a character set
| Expression | Description |
|---|
| \. | period |
| \^ | caret |
| \$ | dollar sign |
| | | pipe |
| \\ | back slash |
| \/ | forward slash |
| \( | opening bracket |
| \) | closing bracket |
| \[ | opening square bracket |
| \] | closing square bracket |
| \{ | opening curly bracket |
| \} | closing curly bracket |
Characters that require escaping (inside a character set)
A ^ must be escaped only if it occurs immediately after the opening [ of the character set. A - must be escaped only if it occurs between two alphabets or two digits.
| Expression | Description |
|---|
| \\ | back slash |
| \] | closing square bracket |
Quantifiers
The quantifier goes after the expression to be quantified.
| 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 |
Boundaries
How word boundary matching works: At the beginning of the string if the first character is \w. Between two adjacent characters within the string, if the first character is \w and the second character is \W. At the end of the string if the last character is \w.
| Expression | Description |
|---|
| ^ | start of string |
| $ | end of string |
| \b | word boundary |
Grouping and capturing
Capturing groups are only relevant in the following methods: string.match(regexp), string.matchAll(regexp), string.replace(regexp, callback). \N is a backreference to the Nth capturing group. Capturing groups are numbered starting from 1.
| 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 |