Supported regular expression features
The listings are taken from the Perl regex docs. Regular expressions are applied via the regex metafunction.
Currently supported or planned features
Modifiers
| Modifier | 
Notes | 
Status | 
i | 
Do case-insensitive pattern matching. For example, "A" will match "a" under /i. | 
Supported | 
m | 
Treat the string being matched against as multiple lines. That is, change ^ and $ from matching the start of the string's first line and the end of its last line to matching the start and end of each line within the string. | 
Supported | 
s | 
Treat the string as single line. That is, change . to match any character whatsoever, even a newline, which normally it would not match. | 
Supported | 
*x and xx | 
Extend your pattern's legibility by permitting whitespace and comments. For details see: Perl regex docs: /x and /xx. | 
Supported | 
n | 
Prevent the grouping metacharacters ( and ) from capturing. This modifier will stop $1, $2, etc. from being filled in. | 
Supported | 
c | 
Keep the current position during repeated matching. | 
Supported | 
Escape sequences (Complete)
| Escape sequence | 
Notes | 
Status | 
\t | 
Tab (HT, TAB)X | 
Supported | 
\n | 
Newline (LF, NL) | 
Supported | 
\r | 
Return (CR) | 
Supported | 
\f | 
Form feed (FF) | 
Supported | 
\a | 
Alarm (bell) (BEL) | 
Supported | 
\e | 
Escape (think troff) (ESC) | 
Supported | 
\x{}, \x00 | 
Character whose ordinal is the given hexadecimal number | 
Supported | 
\o{}, \000 | 
Character whose ordinal is the given octal number | 
Supported | 
Quantifiers (Complete)
| Quantifier | 
Notes | 
Status | 
* | 
Match 0 or more times | 
Supported | 
+ | 
Match 1 or more times | 
Supported | 
? | 
Match 1 or 0 times | 
Supported | 
{n} | 
Match exactly n times | 
Supported | 
{n,} | 
Match at least n times | 
Supported | 
{,n} | 
Match at most n times | 
Supported | 
{n,m} | 
Match at least n but not more than m times | 
Supported | 
 | 
 | 
 | 
*? | 
Match 0 or more times, not greedily | 
Supported | 
+? | 
Match 1 or more times, not greedily | 
Supported | 
?? | 
Match 0 or 1 time, not greedily | 
Supported | 
{n}? | 
Match exactly n times, not greedily (redundant) | 
Supported | 
{n,}? | 
Match at least n times, not greedily | 
Supported | 
{,n}? | 
Match at most n times, not greedily | 
Supported | 
{n,m}? | 
Match at least n but not more than m times, not greedily | 
Supported | 
 | 
 | 
 | 
*+ | 
Match 0 or more times and give nothing back | 
Supported | 
++ | 
Match 1 or more times and give nothing back | 
Supported | 
?+ | 
Match 0 or 1 time and give nothing back | 
Supported | 
{n}+ | 
Match exactly n times and give nothing back (redundant) | 
Supported | 
{n,}+ | 
Match at least n times and give nothing back | 
Supported | 
{,n}+ | 
Match at most n times and give nothing back | 
Supported | 
{n,m}+ | 
Match at least n but not more than m times and give nothing back | 
Supported | 
Character Classes and other Special Escapes (Complete)
| Feature | 
Notes | 
Status | 
[...] | 
Match a character according to the rules of the bracketed character class defined by the "...". Example: [a-z] matches "a" or "b" or "c" ... or "z" | 
Supported | 
[[:...:]] | 
Match a character according to the rules of the POSIX character class "..." within the outer bracketed character class.  Example: [[:upper:]] matches any uppercase character. | 
Supported | 
\g1 or \g{-1} | 
Backreference to a specific or previous group. The number may be negative indicating a relative previous group and may optionally be wrapped in curly brackets for safer parsing. | 
Supported | 
\g{name} | 
Named backreference | 
Supported | 
\k<name> | 
Named backreference | 
Supported | 
\k'name' | 
Named backreference | 
Supported | 
\k{name} | 
Named backreference | 
Supported | 
\w | 
Match a "word" character (alphanumeric plus "_", plus other connector punctuation chars plus Unicode marks) | 
Supported | 
\W | 
Match a non-"word" character | 
Supported | 
\s | 
Match a whitespace character | 
Supported | 
\S | 
Match a non-whitespace character | 
Supported | 
\d | 
Match a decimal digit character | 
Supported | 
\D | 
Match a non-digit character | 
Supported | 
\v | 
Vertical whitespace | 
Supported | 
\V | 
Not vertical whitespace | 
Supported | 
\h | 
Horizontal whitespace | 
Supported | 
\H | 
Not horizontal whitespace | 
Supported | 
\1 | 
Backreference to a specific capture group or buffer. '1' may actually be any positive integer. | 
Supported | 
\N | 
Any character but \n.  Not affected by /s modifier | 
Supported | 
\K | 
Keep the stuff left of the \K, don't include it in $& | 
Supported | 
Assertions
| Assertion | 
Notes | 
Status | 
\b | 
Match a \w\W or \W\w boundary | 
Supported | 
\B | 
Match except at a \w\W or \W\w boundary | 
Supported | 
\A | 
Match only at beginning of string | 
Supported | 
\Z | 
Match only at end of string, or before newline at the end | 
Supported | 
\z | 
Match only at end of string | 
Supported | 
\G | 
Match only at pos() (e.g. at the end-of-match position of prior m//g) | 
Supported | 
Capture groups (Complete)
| Feature | 
Status | 
(...) | 
Supported | 
| Feature | 
Status | 
For ^.[]$()*{}?+|\ | 
Supported | 
Extended Patterns
| Extended pattern | 
Notes | 
Status | 
(?<NAME>pattern) | 
Named capture group | 
Supported | 
(?#text) | 
Comments | 
Supported | 
(?adlupimnsx-imnsx) | 
Modification for surrounding context | 
Supported | 
(?^alupimnsx) | 
Modification for surrounding context | 
Supported | 
(?:pattern) | 
Clustering, does not generate a group index. | 
Supported | 
(?adluimnsx-imnsx:pattern) | 
Clustering, does not generate a group index and modifications for the cluster. | 
Supported | 
(?^aluimnsx:pattern) | 
Clustering, does not generate a group index and modifications for the cluster. | 
Supported | 
(?|pattern) | 
Branch reset | 
Supported | 
(?'NAME'pattern) | 
Named capture group | 
Supported | 
(?(condition)yes-pattern|no-pattern) | 
Conditional patterns. | 
Planned | 
(?(condition)yes-pattern) | 
Conditional patterns. | 
Planned | 
(?>pattern) | 
Atomic patterns. (Disable backtrack.) | 
Supported | 
(*atomic:pattern) | 
Atomic patterns. (Disable backtrack.) | 
Supported | 
Lookaround Assertions
| Lookaround assertion | 
Notes | 
Status | 
(?=pattern) | 
Positive look ahead. | 
Supported | 
(*pla:pattern) | 
Positive look ahead. | 
Supported | 
(*positive_lookahead:pattern) | 
Positive look ahead. | 
Supported | 
(?!pattern) | 
Negative look ahead. | 
Supported | 
(*nla:pattern) | 
Negative look ahead. | 
Supported | 
(*negative_lookahead:pattern) | 
Negative look ahead. | 
Supported | 
(?<=pattern) | 
Positive look behind. | 
Supported | 
(*plb:pattern) | 
Positive look behind. | 
Supported | 
(*positive_lookbehind:pattern) | 
Positive look behind. | 
Supported | 
(?<!pattern) | 
Negative look behind. | 
Supported | 
(*nlb:pattern) | 
Negative look behind. | 
Supported | 
(*negative_lookbehind:pattern) | 
Negative look behind. | 
Supported | 
Special Backtracking Control Verbs
| Backtracking control verb | 
Notes | 
Status | 
(*SKIP) (*SKIP:NAME) | 
Start next search here. | 
Planned | 
(*PRUNE) (*PRUNE:NAME) | 
No backtracking over this point. | 
Planned | 
(*MARK:NAME) (*:NAME) | 
Place a named mark. | 
Planned | 
(*THEN) (*THEN:NAME) | 
Like PRUNE. | 
Planned | 
(*COMMIT) (*COMMIT:arg) | 
Stop searching. | 
Planned | 
(*FAIL) (*F) (*FAIL:arg) | 
Fail the pattern/branch. | 
Planned | 
(*ACCEPT) (*ACCEPT:arg) | 
Accept the pattern/subpattern. | 
Planned | 
Not planned (Mainly because of Unicode or perl specifics)
Modifiers
| Modifier | 
Notes | 
Status | 
p | 
Preserve the string matched such that ${^PREMATCH}, ${^MATCH}, and ${^POSTMATCH} are available for use after matching. | 
Not planned | 
a, d, l, and u | 
These modifiers affect which character-set rules (Unicode, etc.) are used, as described below in "Character set modifiers". | 
Not planned | 
g | 
globally match the pattern repeatedly in the string | 
Not planned | 
e | 
evaluate the right-hand side as an expression | 
Not planned | 
ee | 
evaluate the right side as a string then eval the result | 
Not planned | 
o | 
pretend to optimize your code, but actually introduce bugs | 
Not planned | 
r | 
perform non-destructive substitution and return the new value | 
Not planned | 
Escape sequences
| Escape sequence | 
Notes | 
Status | 
\cK | 
control char          (example: VT) | 
Not planned | 
\N{name} | 
named Unicode character or character sequence | 
Not planned | 
\N{U+263D} | 
Unicode character     (example: FIRST QUARTER MOON) | 
Not planned | 
\l | 
lowercase next char (think vi) | 
Not planned | 
\u | 
uppercase next char (think vi) | 
Not planned | 
\L | 
lowercase until \E (think vi) | 
Not planned | 
\U | 
uppercase until \E (think vi) | 
Not planned | 
\Q | 
quote (disable) pattern metacharacters until \E | 
Not planned | 
\E | 
end either case modification or quoted section, think vi | 
Not planned | 
Character Classes and other Special Escapes
| Character class or escape | 
Notes | 
Status | 
(?[...]) | 
Extended bracketed character class | 
Not planned | 
\pP | 
Match P, named property.  Use \p{Prop} for longer names | 
Not planned | 
\PP | 
Match non-P | 
Not planned | 
\X | 
Match Unicode "eXtended grapheme cluster" | 
Not planned | 
\R | 
Linebreak | 
Not planned | 
Assertions
| Assertion | 
Notes | 
Status | 
\b{} | 
Match at Unicode boundary of specified type | 
Not planned | 
\B{} | 
Match where corresponding \b{} doesn't match | 
Not planned | 
Extended Patterns
| Extended pattern | 
Notes | 
Status | 
(?{ code }) | 
Perl code execution. | 
Not planned | 
(*{ code }) | 
Perl code execution. | 
Not planned | 
(??{ code }) | 
Perl code execution. | 
Not planned | 
(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0) | 
Recursive subpattern. | 
Not planned | 
(?&NAME) | 
Recursive subpattern. | 
Not planned | 
Script runs
| Script runs | 
Notes | 
Status | 
(*script_run:pattern) | 
All chars in pattern need to be of the same script. | 
Not planned | 
(*sr:pattern) | 
All chars in pattern need to be of the same script. | 
Not planned | 
(*atomic_script_run:pattern) | 
Without backtracking. | 
Not planned | 
(*asr:pattern) | 
Without backtracking. | 
Not planned |