验证 email / URL 格式
在测试器构建 pattern,粘贴样本(包括正常的与边界情况),确认实际 match 范围后,再把它放进你的表单验证。Preset 提供了一个能涵盖 95% 真实输入的合理起点。
构建与测试正则表达式 — 实时 match 高亮、capture group 解析、replace 模式预览。JavaScript 风格,完全在浏览器内运算。
JavaScript / ECMAScript regex(就是浏览器原生 RegExp 用的引擎)。它是 POSIX 的严格超集,常用功能也与 Python re、Java Pattern、PCRE 大量重叠。差异要注意:JavaScript 支持 lookahead/lookbehind、命名 group(/(?
不会。整个工具就是这个标签页里的 JavaScript。Pattern 编译、matching、replacement 全都用浏览器原生 RegExp 在本地执行。打开 DevTools → Network 观察:输入时不会发任何请求。可以放心粘贴线上日志、客户 email、或任何不该被服务器记录的内容。
$1、$2 对应数字 capture group;$<name> 对应命名 group;$& 代表整个 match。
.
任一字符(默认不含换行;加 /s 旗标时也包含换行)
\d
任一数字(0-9)
\D
非数字
\w
Word 字符(a-z、A-Z、0-9、下划线)
\W
非 word 字符
\s
空白字符(空格、tab、换行)
\S
非空白
\b
单词边界
^ $
字符串开头 / 结尾(加 /m 旗标时对应行首 / 行尾)
*
前一元素出现 0 次或多次
+
前一元素出现 1 次或多次
?
前一元素出现 0 或 1 次(可选)
{n,m}
前一元素出现 n 到 m 次
(...)
Capture group — 结果存到 $1、$2…
(?:...)
非捕获分组 — 用于分组但不捕获
(?<n>...)
命名 capture group — 替换时用 $<n> 引用
[abc]
字符类 — 任一个 a、b 或 c
[^abc]
否定字符类 — 任一个非 a、b、c 的字符
a|b
或关系 — 匹配 a 或 b
(?=...)
正向先行断言(lookahead)— 后面跟着
(?!...)
否定先行断言 — 后面不跟着
(?<=...)
正向后行断言(lookbehind)— 前面是
(?<!...)
否定后行断言 — 前面不是
$1 $<n>
替换字符串里的反向引用(backreference)— 数字或命名
为开发者打造的干净、快速 regex 游乐场 — 没有弹窗广告,也没有第三方追踪。
输入 pattern 的同时,所有 match 实时在测试字符串里高亮显示。Capture group 也会列在旁边,清楚标出位置与内容。
切到 Replace 模式实时预览 String.replace 的输出,完整支持 $1/$2 数字反向引用、$
global、忽略大小写、multiline、dotall、unicode、sticky 都做成芯片切换 — 与原生 RegExp 完全一致,复制到代码里不会出意外。
Email、URL、IPv4、电话、日期、十六进制颜色码、UUID 一键带入,每个示例都附测试字符串,让你直接看到实际 match 范围。
字符类、量词、锚点、分组、lookahead/lookbehind 一览 — 可折叠,需要时打开,平常收起来不挡路。
Pattern、测试字符串、替换字符串都留在你的浏览器。可在 DevTools → Network 验证:输入时零网络请求。可放心测试线上日志与客户数据的 regex。
正则表达式看起来像乱码,但它背后的引擎其实很简单。
当你写下 /foo/,或调用 new RegExp('foo'),引擎会把 pattern 解析成一个内部自动机(automaton)— 一个能在输入文本上行走的状态机。编译只发生一次,后续匹配速度很快。
引擎在测试字符串上移动游标。在每个位置尝试走完自动机的路径:符合的字符同时前进两个游标,不符合就回溯到前一个分歧点换另一条路试。
Pattern 里的括号开启一个 capture group:当引擎在括号内成功匹配时,会记住匹配到的内容,索引为 $1、$2…。命名 group (?<n>...) 则用名称存储。这些 capture 出现在 match 对象的 groups 字段。
String.replace(regex, replacement) 走相同的 match 路径,但不是返回结果,而是把替换字符串拼进去。替换字符串里的 $1 就是 group 1 抓到的内容 — 用一条 regex 就能把 2024-01-15 改成 15/01/2024。
你会在哪些情境下需要 regex 测试器?
在测试器构建 pattern,粘贴样本(包括正常的与边界情况),确认实际 match 范围后,再把它放进你的表单验证。Preset 提供了一个能涵盖 95% 真实输入的合理起点。
日志里混杂时间戳、ANSI 颜色码、想脱敏的 IP?切到 Replace 模式,用 \b(?:\d{1,3}\.){3}\d{1,3}\b 配上 [REDACTED],先看预览再用 sed 跑真实文件。
IDE 的 find-and-replace 虽然支持 regex,但不会跨多条样本实时预览。先在 iKit 用真实代码片段构建并验证,确认 group 与替换无误后,再粘回 VS Code / IntelliJ。
想从联系人导出文件抓出所有 email,或从收据里抽出每笔金额?在 iKit 建好 regex,复制到一行 script(text.matchAll(re)),临时的解析任务瞬间变成十行代码。
Regex pattern 经常隐含敏感信息:客户 ID 结构、内部 API 路径、密码规则、或你正在试图脱敏的 PII 字段。把它们(以及搭配的真实测试数据)粘贴到别人的服务器,等于同时泄漏 pattern 与输入。iKit 的 regex 测试器只是已加载浏览器标签页的 JavaScript。
来自 iKit 博客的深入教程与工具对比。
JSON parsing and regex extraction — when each one is the right tool for cleaning up ugly responses.
Regex patterns for spotting Base64 strings in the wild, and how Base64 differs from URL percent-encoding.
JavaScript / ECMAScript regex(就是浏览器原生 RegExp 用的引擎)。它是 POSIX 的严格超集,常用功能也与 Python re、Java Pattern、PCRE 大量重叠。差异要注意:JavaScript 支持 lookahead/lookbehind、命名 group(/(?
不会。整个工具就是这个标签页里的 JavaScript。Pattern 编译、matching、replacement 全都用浏览器原生 RegExp 在本地执行。打开 DevTools → Network 观察:输入时不会发任何请求。可以放心粘贴线上日志、客户 email、或任何不该被服务器记录的内容。
两者都是替换字符串里的反向引用。$1、$2… 对应 pattern 里 capture group 的顺序 — (foo)(bar) 会让 $1 = 'foo'、$2 = 'bar'。$
Lookbehind (?<=...) 与 (?
打开 /u (unicode) flag,然后在 pattern 中使用 Unicode property escapes。`\p{L}` 可匹配任何字母 — 包括 ñ、é、中、ก、ا。`\p{N}` 可匹配任何数字,包括 ٠-٩ 这类非拉丁数字。`\p{Emoji}` 可匹配 emoji code points。不加 /u 时,同一个 pattern 在 surrogate pair emoji(BMP 之外的任何字符)上会悄无声息地匹配失败,并将带变音符号的字符当作分离的 base + combining marks 处理。/u flag 告诉引擎将你的输入解释为 Unicode code points,而不是原始的 UTF-16 code units — 一个开关即可消除大多数跨语言 regex bug。