JavaScript RegExp Patterns
New to RegExp?
let regexp = /pattern/flags;
// or
let regext = new RegExp(pattern, flags)
RexExp Flags / Modifiers
Flags can be added to a regexp pattern to modify its behavior:
Flag | Description |
---|---|
/d | Performs substring matches (new 2022) |
/g | Performs a global match (find all) |
/i | Performs case-insensitive matching |
/m | Performs multiline matching |
/s | Allows . (dot) to match line terminators (new 2018) |
/u | Enables Unicode support (new 2015) |
/v | An upgrade to the /u flag for better Unicode support (new 2025) |
/y | Performs a "sticky" search (new 2015) |
RexExp Character Classes
A character class is one or more characters enclosed in square brackets:
Class | Description |
---|---|
[a] | Matches the character between the brackets |
[^a] | Matches all characters NOT between the brackets |
[abc] | Matches all characters between the brackets |
[^abc] | Matches all characters NOT between the brackets |
[a-z] | Matches all characters in the range from a to z |
[^a-z] | Matches all characters NOT in the range from a to z |
[0-9] | Matches all characters in the range from 0 to 9 |
[^0-9] | Matches all characters NOT in the range from 0 to 9 |
RexExp Metacharacters
Metacharacters are characters with a special meaning:
a|b | Matches a or b |
. | Matches any (wildcard) character except line terminators |
\w | Matches word characters (alphanumeric and _) |
\W | Matches non-word characters |
\d | Matches digits (0-9) |
\D | Matches non-digit characters |
\s | Matches whitespace characters (space, tab, newline) |
\S | Matches non-whitespace character |
[\b] | Matches backspace characters |
\0 | Matches NULL characters |
\n | Matches new line characters |
\f | Matches form feed characters |
\r | Matches carriage returns characters |
\t | Matches tab characters |
\v | Matches vertical tab characters |
\p{} | Matches characters with given Unicode Property (new 2018) |
\P{} | Matches character NOT with the given Unicode Property (new 2018) |
\ddd | Matches a character by the octal number ddd |
\xhh | Matches a character by the hexadecimal number hh |
\uhhhh | Matches a Unicode character by the hex number hhhh |
RexExp Assertions
Assertions include boundaries, which indicate the beginnings and endings of lines and words:
Char | Description |
---|---|
^ | Matches from beginning of a string, or the beginning of a line if the m (multiline) flag is set |
$ | Matches from the end of a string, or the end of a line if the m (multiline) flag is set |
\b | Matches from the beginning or end of a word |
\B | Matches NOT from the beginning or end of a word |
(?=...) | Matches the subsequent string |
(?!...) | Matches NOT the subsequent string |
(?<=...) | Matches the previous string (new 2018) |
(?<!...) | Matches NOT the previous string (new 2018) |
RexExp Groups
Regular Expression Groups (aka capturing groups) allows parts of a matched string to be extracted and reused. They are created by enclosing a pattern within parentheses ():
Char | Description |
---|---|
(x) | Matches x and remembers the match |
(?<n>x) | Matches x and labels it n |
(?flag:x) | Enables flag(s) only to the group |
(?flag-flag:x) | Disables flag(s) only to the group |
RexExp Quantifiers
Quantifiers indicate the numbers of characters or expressions to match:
Code | Description |
---|---|
x+ | Matches at least one x |
x* | Matches zero or more occurrences of x |
x? | Matches zero or one occurrences of x |
x{n} | Matches n occurences of x |
x{n,m} | Matches from n to m occurences of x |
x{n,} | Matches n or more occurences of x |
Browser Support
/regexp/
is an ECMAScript1 (JavaScript 1997) feature.
It is supported in all browsers:
Chrome | Edge | Firefox | Safari | Opera | IE |
Yes | Yes | Yes | Yes | Yes | Yes |