Regex Flavor Matrix

Feature support across 8 regex engines — verified by running the same patterns through each real engine, not by reading docs alone.

Test a pattern in all 8 engines side by side → RegexTester.dev Free, no sign-up. Every engine runs in your browser via WebAssembly, so results are flavor-accurate.
Feature PCRE2 RE2 JavaScript Python Go Java .NET Rust
Lookahead (?=…) (?!…)✓✗✓✓✗✓✓✗
Lookbehind (?<=…) (?<!…)✓ variable length✗✓ variable length (ES2018)✓ fixed width✗bounded length✓ variable length✗
Backreferences \1✓✗✓✓✗✓✓✗
Named groups(?<n>…)(?P<n>…)(?<n>…)(?P<n>…)(?P<n>…)(?<n>…)(?<n>…)(?P<n>…)
Atomic groups (?>…)✓✗✗3.11+✗✓.NET 7+✗
Possessive quantifiers x*+✓✗✗3.11+✗✓✗✗
Recursion (?R) / subroutines✓✗✗✗✗✗balancing groups✗
Unicode properties \p{L}✓✓✓ with u flag✓✓✓✓✓
Free-spacing mode (?x)✓✓✗✓✓✓✓✓
Match-start reset \K✓✗✗✗✗✗✗✗
Conditionals (?(1)…)✓✗✗✗✗✗✗✗
Linear-time guarantee (no catastrophic backtracking)✗✓✗✗✓✗with timeout✓

The three families

Portability trap: a pattern with \1 or (?<=…) works in Python and JavaScript, then silently breaks when you move it to Go or Rust — both engines reject it at compile time. Run it through the compatibility checker before you ship.

Verify it yourself

Every cell in the table above can be reproduced in a browser: