Regular Expressions

Regular expression is a special language using which it is possible to look for matches in text. Regular expressions allow to use more complicated filters than simple text match.

Regular expressions are supported in:

Sample patterns

These patterns are intended for reference purposes and have not been extensively tested. Please use with caution and test thoroughly before use.

^$

Empty value

.+

Non-empty (any) value

([A-Za-z0-9-]+)

Letters, numbers and hyphens

(\d{1,2}\/\d{1,2}\/\d{4})

Date, for example 21/3/2006

([^\s]+(?=\.(jpg|gif|png))\.\2

JPG, GIF or PNG image

(^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$)

Any number from 1 to 50 inclusive

(#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?)

Valid hexadecimal color code

((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15})

8 to 15 character string with at least one upper case letter, one lower case letter and one digit (useful for passwords)

(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})

Email addresses

(\<(/?[^\>]+)\>)

HTML tags

Items marked with "+" should work in most regular expressions implementations.

Anchors

^

Start of line +

\A

Start of string +

$

End of line +

\Z

End of string +

\b

Word boundary +

\B

Not word boundary +

\<

Start of word

\>

End of word

Character classes

\c

Control character

\s

White space

\S

Not white space

\d

Digit

\D

Not digit

\w

Word

\W

Not word

\xhh

Hexadecimal character hh

\Oxxx

Octal character xxx

POSIX character classes

[:upper:]

Upper case letters

[:lower:]

Lower case letters

[:alpha:]

All letters

[:alnum:]

Digits and letters

[:digit:]

Digits

[:xdigit:]

Hexadecimal digits

[:punct:]

Punctuation

[:blank:]

Space and tab

[:space:]

Blank characters

[:cntrl:]

Control characters

[:graph:]

Printed characters

[:print:]

Printed characters and spaces

[:word:]

Digits, letters and underscore

Assertions

?=

Lookahead assertion +

?!

Negative lookahead +

?<=

Lookbehind assertion +

?!= or ?

Negative lookbehind +

?>

Once-only Subexpression

?()

Condition [if then]

?()|

Condition [if then else]

?#

Comment

Quantifiers

*

0 or more

*?

0 or more, non-greedy

+

1 or more

+?

1 or more, non-greedy

?

0 or 1

??

0 or 1, non-greedy

{3}

Exactly 3

{3,}

3 or more

{3,5}

3, 4 or 5

{3,5}?

3, 4 or 5, non-greedy

Special characters

\

Escape character

\n

New line

\r

Carriage return

\t

Tab

\v

Vertical tab

\f

Form feed

\a

Alarm

[\b]

Backspace

\e

Escape

\N{name}

Named character

String replacement (Backreferences)

$n

nth non-passive group

$2

"xyz" in /^(abc(xyz))$/

$1

"xyz" in /^(?:abc)(xyz)$/

$`

Before matched string

$'

After matched string

$+

Last matched string

$&

Entire matched string

$_

Entire input string

$$

Literal "$"

Ranges

.

Any character except new line (\n)

(a|b)

a or b

(…​)

Group

(?:…​)

Passive group

[abc]

Range (a or b or c)

[^abc]

Not a or b or c

[a-q]

Letter between a and q

[A-Q]

Upper case letter between A and Q

[0-7]

Digit between 0 and 7

\n

nth group/subpattern

Ranges are inclusive.

Pattern modifiers

g

Global match

i

Case-insensitive

m

Multiple lines

s

Treat string as single line

x

Allow comments and white space in pattern

e

Evaluate replacement

U

Non-greedy pattern

Metacharacters (must be escaped)

^

[

.

$

{

*

(

\

+

|

?

<

>

)