From fee705e5b57e8e3386d097476aa29496c39f6f60 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 19:42:28 +0000 Subject: [PATCH] Add Regex Tester tool A single-file, fully offline regex tester: enter a pattern, toggle flags (g/i/m/s/u/y), and see live-highlighted matches with numbered and named capture groups broken out. Uses the browser's native RegExp engine, persists state in localStorage, and follows the design system with full light/dark support. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_014EWUwc8fQRjdPCdsB3rbec --- regex-tester/index.html | 630 ++++++++++++++++++++++++++++++++++ screenshots/regex-tester.webp | Bin 0 -> 36172 bytes tools.json | 10 +- 3 files changed, 639 insertions(+), 1 deletion(-) create mode 100644 regex-tester/index.html create mode 100644 screenshots/regex-tester.webp diff --git a/regex-tester/index.html b/regex-tester/index.html new file mode 100644 index 0000000..e624295 --- /dev/null +++ b/regex-tester/index.html @@ -0,0 +1,630 @@ + + + + + + + Regex Tester + + + +
+
+
Developer · Text
+

Regex Tester

+

Write a regular expression, toggle its flags, and watch every match light up in + your test text — with capture groups broken out, live. Runs entirely on your device.

+
+ + +
+ / + + / + +
+ +
+ + + + + + +
+ +
+ +
+ + +
+ +
+ + +
+
+ +
+
    + +
    + +
    + Quick reference: \d digit · \w word char · + \s whitespace · . any char · [abc] set · + a* zero+ · a+ one+ · a? optional · + (…) capture group · a|b or · ^ $ anchors. + Your pattern and text are saved locally. +
    +
    + + + + diff --git a/screenshots/regex-tester.webp b/screenshots/regex-tester.webp new file mode 100644 index 0000000000000000000000000000000000000000..acbb7d9f5f51cbfb6a4eea66ee7f6a1df811b505 GIT binary patch literal 36172 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 literal 0 HcmV?d00001 diff --git a/tools.json b/tools.json index 5e50282..6748e5b 100644 --- a/tools.json +++ b/tools.json @@ -1,5 +1,5 @@ { - "catalogVersion": 24, + "catalogVersion": 25, "tools": [ { "dir": "color-capture", @@ -232,6 +232,14 @@ "glyph": "🔀", "color": "#c026d3", "version": 1 + }, + { + "dir": "regex-tester", + "name": "Regex Tester", + "description": "Write a regular expression, toggle its flags, and see every match and capture group light up in your text — live and fully offline.", + "glyph": "🔍", + "color": "#7c3aed", + "version": 1 } ] }