正则表达式测试器
实时验证、调试正则表达式,内置常见正则片段。
正则表达式
在 / / 之间输入正则,点击标志切换
匹配结果
预置模板用于快速上手常见格式校验,生产环境的业务级校验(取值范围、真实有效性)请结合代码逻辑二次确认。
语法速查
常用正则标志与元字符速查,生成时实时可用
g全局匹配查找所有匹配项,而非第一个就停止。
i忽略大小写匹配字母时不区分大小写,A 与 a 视为相同。
m多行模式使 ^ 和 $ 分别匹配每行的开头和结尾。
sdotAll使 . 匹配包括 \n 在内的所有字符。
^ / $行锚点^ 匹配行开头,$ 匹配行结尾(m 模式下为每行)。
.任意字符匹配除换行外的任意单个字符(s 模式下包含换行)。
* + ?量词* 零或多次,+ 一或多次,? 零或一次。
[abc]字符类匹配括号内任一字符;[^abc] 取反;[a-z] 区间。
\d \w \s缩写类\d 数字,\w 字母/数字/下划线,\s 空白字符。
什么是正则表达式测试器?
正则表达式(Regex)是一组定义搜索模式的字符序列,几乎被用于所有编程语言中的文本验证、搜索与提取工作。从验证邮箱格式到解析海量日志,Regex 是开发者工具箱中最强大的利器之一。
本测试器提供实时反馈环境,让你在编写业务代码前能够快速验证正则模式的正确性。它支持全局 (g)、多行 (m)、不区分大小写 (i) 等多种标志,并能清晰地高亮显示所有匹配结果。此外,它还内置了常用正则库,涵盖邮箱、URL、IPv4、手机号等高频场景。
如何使用此工具
在页面上方的输入框中编写你的正则模式(无需包裹修饰符斜杠),并选择需要的标志。在左侧文本区域输入或粘贴要测试的字符串。观察右侧面板,系统会即时标注出所有匹配项,并显示总数。
如果你是正则初学者或急需解决常见任务,可以展开左侧的”常用正则库”侧边栏,点击预设模式即可一键加载。所有的匹配和计算都在你的浏览器本地完成,数据百分之百私密安全。
典型 DevOps 使用场景
(?P<ts>\d{4}-\d{2}-\d{2})从 Nginx 或应用日志中用正则提取时间戳、错误级别、请求路径是最高频的运维操作。命名捕获组((?P<ts>\d-\d-\d))比索引捕获组更易维护。注意引擎方言:grep 默认 BRE 不支持 \d 和非捕获组,需加 -E 或 -P;awk 默认 ERE。跨工具移植模式前务必确认目标引擎的语法兼容性,避免在 BRE 中误用 ERE/PCRE 特性导致静默错误。
^v?\d+\.\d+\.\d+$CI/CD 流水线常需验证 Git Tag 是否符合 SemVer。\d+\.\d+\.\d+(-[\w.]+)? 覆盖 1.2.3 和 1.2.3-rc.1 两种格式,但须加锚点 ^v?\d+\.\d+\.\d+$ 防止 “1.2.3-dirty” 被误判为正式版本。GitHub Actions 的 on.push.tags 只支持简化 glob(v[0-9].*),复杂策略仍需在脚本中用 bash [[ “$TAG” =~ regex ]] 做精确内联匹配,避免引入 grep 子进程开销。
\b(\d{1,3}\.){3}\d{1,3}\bgrep -Eo 可从日志批量提取 IP 地址,但纯正则无法验证合法范围(999.999.999.999 同样会匹配)。过滤私有网段可组合 grep -v 做二次筛选。应用层做严格校验时建议使用语言内置库(Python ipaddress、Go net.ParseIP),正则仅适用于提取和粗筛阶段。这一分层策略——正则提取、库校验——在生产代码中可靠性更高。
(?<=password=)[^&]+从日志或 API 响应中脱敏 Token 和密码是生产合规的必要手段。sed 可用反向引用替换 Authorization 头内容;Python 中后向断言((?<=password=))可精确替换值而不影响键名。注意:正则脱敏是尽力而为,私钥、完整 PAN 卡号等强敏感数据应在进入日志管道前做结构化过滤,而非事后清洗——日志系统本身可能已有持久化副本。
^(main|feature/|release/)master
^([\w.]+)\s*=\s*(.+)$解析 .env 或 INI 格式配置时,^([\w.]+)\s*=\s*(.+)$ 捕获键名和值(允许等号两侧有空格)。注释行(# 开头)和空行需在循环中用 ^\s*(#
常见错误模式
贪婪量词(*、+)匹配尽可能多的字符,在解析 HTML 或 JSON 时极易”过度匹配”。典型陷阱:<.*> 从第一个 < 一直匹配到最后一个 >,而非最短标签。修正方案是懒惰量词 <.*?> 或否定字符类 <[^>]*>,后者性能更优——它明确告知引擎 > 不在匹配范围内,完全消除回溯试探,在大文本场景下速度差距可达数倍。
灾难性回溯是 ReDoS 攻击的根源。嵌套量词(如 (a+)+)或重叠交替分支(如 (ab
遗漏 m 标志导致 ^ 只锚定整个字符串开头而非逐行锚定,是处理日志文件的高频 bug。另一个常见问题是转义混乱:JS/Python 字符串字面量中 \d 实际是 d(反斜杠被消耗),需要双反斜杠 \\d 或使用原始字符串(Python r'\d')。Unicode 场景下,\w 默认只覆盖 ASCII 字母,要匹配中文等字符需启用 u 标志(JavaScript)或使用 \p Unicode 属性转义(需引擎支持)。