Regular Expressions Reference
The regular expressions reference on this website functions both as a reference to all available regex syntax and as a comparison of the features supported by the regular expression flavors discussed in the tutorial. The reference tables pack an incredible amount of information. To get the most out of them, follow this legend to learn how to read them.
The tables have six columns for each regular expression feature. The first four explain the feature.
Feature | The name of the feature, which also serves as a link to the relevant section in the tutorial. |
Syntax | The actual regex syntax for this feature. If the syntax is fixed, it is simply shown as such. If the syntax has variable elements, the syntax is described. |
Description | Summary of what the feature does. |
Example | Functional regular expression that demonstrates the feature. |
The final two columns indicate whether your two chosen regular expression flavors support this particular feature. You can change the flavors using the drop-down lists above the table. There are many possible indicators.
YES | All versions of this flavor support this feature. |
3.0 | Version 3.0 and all later versions of this flavor support this feature. Earlier versions do not support it. |
2.0 only | Only version 2.0 supports this feature. Earlier and later versions do not support it. |
2.0–2.9 | Only versions 2.0 through 2.9 supports this feature. Earlier and later versions do not support it. |
Unicode | This feature works with Unicode characters in all versions of this flavor. |
code page | This feature works with the characters in the active code page in all versions of this flavor. |
ASCII | This feature works with ASCII characters only in all versions of this flavor. |
3.0 Unicode | This feature works with Unicode characters in versions 3.0 and later of this flavor. Earlier versions do not support it at all. |
3.0 Unicode 2.0 ASCII | This feature works with Unicode characters in versions 3.0 and later this flavor. It works with ASCII characters in versions 2.0 through 2.9. Earlier versions do not support it at all. |
3.0 Unicode 2.0 code page | This feature works with Unicode characters in versions 3.0 and later this flavor. It works with the characters in the active code page in versions 2.0 through 2.9. Earlier versions do not support it at all. |
string | The regex flavor does not support this syntax. But string literals in the programming language that this regex flavor is normally used with do support this syntax. |
3.0 1.0 string | Version 3.0 and later of this regex flavor support this syntax. Earlier versions of the regex flavor do not support this syntax. But string literals in the programming language that this regex flavor is normally used with have supported this syntax since version 1.0. |
option | All versions of this regex flavor support this feature if you set a particular option or precede it with a particular mode modifier. |
option 3.0 | Version 3.0 and all later versions of this regex flavor support this feature if you set a particular option or precede it with a particular mode modifier. Earlier versions either do not support the syntax at all or do not support the mode modifier to change the behavior of the syntax to what the feature describes. |
3.0 2.0 fail | Version 3.0 and all later versions of this regex flavor support this feature. Version 2.0 all later releases prior to 3.0 recognize the syntax, but always fail to match this regex token. Versions prior to 2.0 do not support the syntax. |
no | No version of this flavor support this feature. No indication is given as to what this syntax actually does. The same syntax may be used for a different feature which is indicated elsewhere in the reference table. Or the syntax may trigger an error or it may be interpreted as plain text. |
n/a | This feature is not applicable to this regex flavor. Features that describe the behavior of certain syntax introduced earlier in the reference table show n/a for flavors that do not support that syntax at all. |
fail | The syntax is recognized by the flavor and regular expressions using it work, but this particular regex token always fails to match. The regex can only find matches if this token is made optional by alternation or a quantifier. |
2.0–2.9 fail | Versions 2.0 through 2.9 recognize the syntax, but always fail to match this regex token. Earlier and later versions either don’t recognize the syntax or treat it as a syntax error. |
ignored | The syntax is recognized by the flavor but it does not do anything useful. This particular regex token always finds a zero-length match. |
error | The syntax is recognized by the flavor but it is treated as a syntax error. |
When this legend says “all versions” or “no version”, that means all or none of the versions of each flavor that are covered by the reference tables:
.NET | 1.0–1.1: first 2 releases of the original .NET framework 2.0–7.0: .NET Framework 2.0–4.8, .NET Core 1.0.0–3.1.0, and .NET 5.0–7.0 1.0–7.0: all versions of the .NET Framework and .NET Core |
Java | 4–21 |
Perl | 5.8–5.32 |
PCRE | 4.0–8.45 |
PCRE2 | 10.00–10.39 |
PHP | 5.0.0–8.1.24 |
Delphi | XE–XE8 & 10–10.4 & 11; TRegEx only; also applies to C++Builder XE–XE8 & 10–10.4 & 11 |
R | 2.14.0–4.2.1 |
JavaScript | Latest versions of Chrome, Edge, and Firefox |
VBScript | VBscript and Internet Explorer in quirks mode |
XRegExp | 2.0.0–5.1.0 |
Python | 2.4–3.12 |
Ruby | 1.8–3.2 |
std::regex | Visual C++ 2008–2022 (Dinkumware std library) |
boost::regex | 1.38–1.39 & 1.42–1.83 |
Tcl ARE | 8.4–8.6 |
POSIX BRE | IEEE Std 1003.1 |
POSIX ERE | IEEE Std 1003.1 |
GNU BRE | |
GNU ERE | |
Oracle | 10gR1, 10gR2, 11gR1, 11gR2, 12c |
XML | 1.0–1.1 |
XPath | 2.0–3.1 |
For the .NET flavor, some features are indicated with “ECMA” or “non-ECMA”. That means the feature is only supported when RegexOptions.ECMAScript is set or is not set. Features indicated with “non-ECMA Unicode” match ASCII characters when RegexOptions.ECMAScript is set and Unicode characters when RegexOptions.ECMAScript is not set. Everything that applies to .NET 2.0 or later also applies to any version of .NET Core. The Visual Studio IDE uses the non-ECMA .NET flavor starting with VS 2012.
For the std::regex and boost::regex flavor there are additional indicators ECMA, basic, extended, grep, egrep, and awk. When one or more of these appear, that means that the feature is only supported if you specify one of these grammars when compiling your regular expression. Features with Unicode indicators match Unicode characters when using std::wregex or boost::wregex on wide character strings. In the replacement string reference, the additional indicators are sed and default. When either one appears, the feature is only supported when you either pass or don’t pass match_flag_type::format_sed to regex_replace(). For boost, there is one more replacement indicator “all” that indicates the feature is only supported when you pass match_flag_type::format_all to regex_replace().
For the PCRE2 flavor, some replacement string features are indicated with “extended”. This means the feature is only supported when you pass PCRE2_SUBSTITUTE_EXTENDED to pcre2_substitute
.