08.21.2019
Regular Expression Cheat Sheet
Regular expression common symbol, anchors, character classes, POSIX Character Classes, Assertions, Quantifiers, Ranges, Special Characters, String Replacement, Pattern Modifiers, Metacharacters must be escaped
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 |
Assertions
?= | Lookahead assertion |
?! | Negative lookahead |
?<= | Lookbehind assertion |
?!= or ? | Negative lookbehind |
?> | Once-only Subexpression |
?() | Condition [if then] |
?()| | Condition [if then else] |
?# | Comment |
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 |
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 |
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 + |
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 |
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 | Ungreedy pattern |
Metacharacters (must be escaped)
^ | [ | . |
$ | { | * |
( | \ | + |
< | > |
Sample Patterns
([A-Za-z0-9-]+) | Letters, numbers and hyphens |
(\d{1,2}\/\d{1,2}\/\d{4}) | Date (e.g. 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 colour 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 |
Source: AddedBytes.com