JavaScript engine tape trace · flavor declared
A match is a span, state, and engine decision.
Patterns do not have one universal meaning. This bench follows the running browser’s ECMAScript RegExp semantics and reports indices, captures, flags, and replacement behavior as execution evidence.
ONLY
/(?<proto>https?):\/\/(?<host>[^/:\s]+)(?::(?<port>\d+))?/dguINPUTVisit https://example.com:8080/docs next.Flag state machine
Flags change meaning and iteration—not decoration.
Indices
Adds start/end spans for the match and captures
Global
Repeats and mutates lastIndex
Ignore case
Uses the engine’s case-folding rules
Multiline
^ and $ also see line boundaries
Dot all
. can include line terminators
Unicode
Code-point-aware parsing and escapes
Unicode sets
Set operations and string properties
Sticky
Must match exactly at lastIndex
Capture ledger
Unmatched is different from an empty match.
0 · full[6, 35)https://example.com:8080/docsparticipated1 · proto[6, 11)httpsparticipated2 · host[14, 25)example.comparticipated3 · port[26, 30)8080participated4 · optional—undefinedunmatchedNative replacement proof
The template has its own language.
Visit https://example.com:8080/docs next.$<proto>://$<host>$<path>Visit https://example.com next.Backtracking isolation chamber
Responsive UI is not proof of a safe pattern.
/^(a+)+$/aaaaaaaaaaaaaaaaaaaaaaaaaaaa!A run owns a dedicated Worker. Starting another run terminates the previous one, so the main page can keep responding. Production safety still depends on input distribution, engine, pattern structure, and resource policy.