Regex Named Groups

Learn named groups and why their syntax differs between JavaScript, Python, PCRE2 and Go.

Checking engine…

Not saved: closing this tab loses your work. Save keeps the regex, flags, engine, texts and tests in this browser only.
Workspace actions
Regular expression
Reference

Regex quick reference

^ · $
Start/end; m = lines.
[abc] · \d
Listed character / digit.
* · + · ?
Zero or more, one or more, optional.
(...)
Capture a numbered group.
(?<name>...)
Named capture.
(?=...)
Ahead; lookbehind varies.
i · m · s
Ignore case / line anchors / dot-newline.
Browse the full reference

Tab inserts a tab · press Esc, then Tab, to leave the editor

No regex yet.

Engine and options
the RegExp of this browser (version not pinned)
⋯

the RegExp of this browser (version not pinned)

Not available in JavaScript · This browser: x · ignore pattern whitespace; a · ASCII-only classes; U · lazy by default; J · duplicate names. u and v cannot be combined.

To run: enter a regex; enter a test text.

Test text

Tab inserts a tab · press Esc, then Tab, to leave the editor

No text yet.

No result yet

Results appear here after a run.

Verified Fixture FX-S05

What it does

Named groups give a capture a name as well as a number. The syntax differs by engine.

How to use it

  1. Load the example.
  2. Switch engines and compare the syntax each one needs.
  3. Check the counterexample.

Verified example

Example

Text "TX-00057"

JavaScript · This browser
(?<id>TX-\d{5})

Result: "TX-00057"; groups "TX-00057"

Python re · Local WASM
(?P<id>TX-\d{5})

Result: "TX-00057"; groups "TX-00057"

PCRE2-8 · Local WASM
(?<id>TX-\d{5})

Result: "TX-00057"; groups "TX-00057"

Go regexp · Local WASM
(?P<id>TX-\d{5})

Result: "TX-00057"; groups "TX-00057"

Counterexample

Text "TX-7"

JavaScript · This browser
(?<id>TX-\d{5})

Result: no match

Python re · Local WASM
(?P<id>TX-\d{5})

Result: no match

PCRE2-8 · Local WASM
(?<id>TX-\d{5})

Result: no match

Go regexp · Local WASM
(?P<id>TX-\d{5})

Result: no match

Recorded by running fixture FX-S05 on : rp.js@1 on Node v24.21.0 (V8), v24.21.0, CPython 3.14.2 (Pyodide 314.0.7), PCRE2 10.48, go1.27.1. JavaScript results come from the rp.js@1 core on Node’s V8; your browser runs the same core.

Engines

Limits