Flags
gfind all matches,iignore case,mmake^/$match at line breaks,slet.match newlines,uUnicode mode (needed for\p{L}and emoji),ysticky.
Engine differences
This tester uses the JavaScript (ECMAScript) engine. Most syntax is shared with PCRE, Python and Java, but not all of it. JavaScript has named groups (?<name>…) and lookbehind, but no possessive quantifiers, atomic groups or inline modifiers like (?i). Check your target language's documentation before shipping a pattern written here.
Avoid catastrophic backtracking
Nested quantifiers such as (a+)+$ can take exponential time on inputs that almost match, which is a known denial-of-service vector (ReDoS). If the page freezes on a pattern, that pattern will freeze your server too.
FAQ
Why does my pattern match an empty string forever?
Patterns like a* can match zero characters. The tester advances past empty matches, as String.matchAll does, so you see each position once.
Is my test text sent anywhere?
No, matching happens in your browser.