正则表达式测试

边写边看高亮结果,支持捕获分组、命名分组、替换预览与常用正则速查库。

🔒 本地运行🔥 热门
//
✔ 正则合法 · 共 3 处匹配 · 耗时 0.1 ms
测试文本98 字符 · 2 行
高亮结果3 处匹配
订单 A1001 创建于 2026-09-09,预计 2026-09-15 发货; 上一单 2025-12-31 已完成,联系电话 13800138000,邮箱 sourcekit@qq.com。
匹配明细(含捕获分组)
#位置完整匹配分组
1132026-09-09
$12026
$209
$309
2272026-09-15
$12026
$209
$315
3462025-12-31
$12025
$212
$331
替换预览

替换串里可用 $1 $2 引用分组、$& 引用整个匹配、$<name> 引用命名分组。

订单 A1001 创建于 2026-09-09,预计 2026-09-15 发货;
上一单 2025-12-31 已完成,联系电话 13800138000,邮箱 sourcekit@qq.com。
订单 A1001 创建于 09/09/2026,预计 15/09/2026 发货;
上一单 31/12/2025 已完成,联系电话 13800138000,邮箱 sourcekit@qq.com。
常用正则库
点「试一下」直接填入上方并带示例文本
用途正则操作
手机号(中国大陆)^1[3-9]\d{9}$
邮箱^[\w.+-]+@[\w-]+(\.[\w-]+)+$
身份证(18 位)^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
IPv4^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$
URL^https?:\/\/[\w.-]+(:\d+)?(\/[^\s]*)?$
日期 yyyy-MM-dd^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
中文字符[\u4e00-\u9fa5]+
强密码(8-20 含大小写数字)^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^\s]{8,20}$
车牌号(新能源兼容)^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]{1}$
邮政编码^[1-9]\d{5}$
16 进制颜色^#([\da-fA-F]{3}|[\da-fA-F]{6})$
HTML 标签<\/?([a-zA-Z][\w-]*)[^>]*>
去首尾空白^\s+|\s+$
金额(两位小数)^\d+(\.\d{1,2})?$
字符与量词
.除换行外任意字符(加 s 后含换行)
\d \D数字 / 非数字
\w \W字母数字下划线 / 取反
\s \S空白 / 非空白
[a-z0-9]字符集,^ 开头表示取反
* + ?0+ / 1+ / 0 或 1 次
{2,5}2 到 5 次;{2,} 为至少 2 次
*? +?懒惰量词,尽可能少匹配
分组与断言
(abc)捕获分组,可用 $1 引用
(?:abc)非捕获分组,只分组不记录
(?<y>\d+)命名分组,取值 groups.y
a|b或
^ $行首 / 行尾(配合 m 标志)
\b单词边界,中文场景基本无效
(?=x) (?!x)前瞻 / 否定前瞻
(?<=x) (?<!x)后顾 / 否定后顾

本工具能做什么

边写边看高亮结果,支持捕获分组、命名分组、替换预览与常用正则速查库。

✓匹配测试:实时高亮,奇偶色区分相邻匹配,显示 N 处匹配徽标与耗时
✓分组明细表:每处匹配的位置、完整内容、$1/$2… 及命名分组逐条展示
✓替换预览:支持 $1、$&、$<name> 引用,左右对照、一键复制、结果转原文
✓标志开关:g / i / m / s / u 逐项可勾选,非法正则即时红字报错
✓常用正则库:手机号/邮箱/身份证/IPv4/URL/日期/中文/强密码/车牌等 14 条
✓语法速查:字符量词、分组断言两张速查表,写正则不用翻文档
✓安全保护:防空匹配死循环、限制 5000 次与 800ms 超时中断

适用场景

  • 开发调试时编解码转换
  • 生成测试数据和唯一 ID
  • 正则表达式快速验证

常见问题

为什么我的正则跑一半就卡死了?

大概率踩了灾难性回溯,典型写法是 (a+)+b 或嵌套的 (.*)*。改法:把嵌套量词拆开、用具体字符集替代 .*、能用非捕获分组就别用捕获分组。本工具对超时匹配会自动中断保护。

身份证 / 手机号正则要写多严?

前端只做「格式初筛」,真正的校验要靠身份证校验位算法与短信验证码。号段正则写太死,运营商放新号段时就会误杀真实用户。

Java / Python 的正则能直接复制过来吗?

大部分能。注意差异:Java 字符串里反斜杠要双写 \\d;Python 用 (?P<name>) 而 JS 用 (?<name>);JS 早期不支持后顾断言,老浏览器需谨慎。

g 标志会带来什么坑?

带 g 的正则对象有 lastIndex 状态,复用同一个实例反复调用 test() 会得到交替的 true/false。要么每次新建,要么手动重置 lastIndex。

⚠️
免责声明
  • 本工具为纯前端实现,输入内容仅在你的浏览器本地处理,不上传、不存储于服务器。
  • 结果仅供开发调试参考。对于超长文本、特殊编码、非标准格式或极端边界输入,可能存在解析偏差或精度损失。
  • 请勿在本工具中处理生产环境密钥、个人敏感信息或涉密数据。因浏览器插件、剪贴板、共享设备等本站无法控制的环节导致的泄露,本站不承担责任。
  • 重要数据请自行备份并二次校验,勿将本工具输出直接用于生产环境。
  • 在法律允许的范围内,本站不对因使用或依赖本工具输出结果而产生的任何直接或间接损失承担责任。继续使用即表示你已理解并接受本声明。
发现结果有误?欢迎 反馈给我们,我们会尽快核实修正 · 详见 《隐私声明》