Regex Cheatsheet

Useful regular expressions syntax and patterns.

Normal characters

. 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

space

\t

tab

\n

newline

\r

carriage return

\s

space, tab, newline or carriage return

Character set

[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.

Characters that require escaping (outside a character set)

\.

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)

\\

back slash

\]

closing square bracket

  • 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.

Quantifiers

{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.

Boundaries

^

start of string

$

end of string

\b

word boundary

  • 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.

Matching

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

(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 the Nth capturing group. Capturing groups are numbered starting from 1.