Matt Pavelle

Regular Expression Quick Reference

Compiled from numerous sources across the web.

Quantifiers
*0 or more
*?0 or more, ungreedy
+1 or more
+?1 or more, ungreedy
?0 or 1
??0 or 1, ungreedy
{3}Exactly 3
{3,}3 or more
{3,5}3, 4 or 5
{3,5}?3, 4 or 5, ungreedy
Ranges (inclusive)
.Until 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]Char between a & q
[A-Q]Uppercase between A & Q
[0-7]Digit between 0 & 7
nnth group/subpattern

POSIX Character Classes
[:upper:]Uppercase chars
[:lower:]Lowercase chars
[:alpha:]All chars
[:alnum:]Digits, chars
[:digit:]Digits
[:xdigit:]Hex digits
[:punct:]Punctuation
[:blank:]Space, tab
[:space:]Blank chars
[:cntrl:]Control chars
[:graph:]Printed chars
[:print:]Printed chars, spaces
[:word:]Digits, chars, underscores
Character Classes
cControl char
sWhitespace
SNot whitespace
dDigit
DNot digit
wWord
WNot word
xhhHex char hh
OxxxOctal char xxx


Metachars (must be escaped)
[ ] { } ( ) < >
| ^ $ . * + ?

String Replacement (backreferences)
$nnth non-passive group
2xyz in /^(abc(xyz))$/
1xyz in /^(?:abc)(xyz)$/
$`Before matched string
$'After matched string
$+Last matched string
$&Entire matched string
$_Entire input string
$$Literal "$"
Anchors
^Start of line
AStart of string
$End of line
ZEnd of string
bWord boundary
BNot word boundary
<Start of word
>End of word

Assertions
?=Lookahead assertion
?!Negative lookahead
?<=Lookbehind assertion
?!= or ?Negative lookbehind
?>Once-only Subexpression
?()Condition [if then]
?()|Condition [if then else]
?#Comment
Special Characters
Escape Character
nNew line
rCarriage return
tTab
vVertical tab
fForm feed
aAlarm
[b]Backspace
eEscape
N{name}Named Character

Pattern Modifiers
gGlobal match
iCase-insensitive
mMultiple lines
sTreat string as single line
xAllow comments & whitespace
eEvaluate replacement
UUngreedy pattern

Samples
d{1,2}/d{1,2}/d{4}
Date e.g. 12/22/1974
[^s]+(?=.(jpg|gif|png)).2
filename with extension jpg, gif or png
^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$
any number from 1 to 50
#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?
hexadecimal color code
(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,16}
8 to 16 char string with uppercase, lower case, & one digit (for passwords)
w+@[a-zA-Z_]+?.[a-zA-Z]{2,6}
email addresses
<(/?[^>]+)>
HTML Tags
[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*
Hyperlinks