正则表达式在线测试与常用正则速查表 (Regex Tester)
专为前端表单校验、爬虫提取与服务端日志分析打造的轻快正则调试器。支持实时多项匹配结果列表呈现,集成 200ms 防抖与 ReDoS 防假死保护,预置 6 款工业级常用模板。
常用正则表达式速查模板清单
| 业务场景 | 正则表达式模式 Pattern |
|---|---|
| 电子邮箱 (Email) | [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} |
| 中国手机号码 | 1[3-9]\d{9} |
| IPv4 地址 | (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) |
| HTTP/HTTPS 链接 | https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*) |
| 中文字符匹配 | [\u4e00-\u9fa5]+ |
| 中国二代身份证号 | [1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx] |
常见问题解答 (FAQ)
Q: 常用的正则表达式修饰符(Flags)代表什么?
A: g (Global) 代表全局匹配,找到目标字符串中所有符合条件的结果而非在命中首项后退出;i (Ignore Case) 代表忽略英文大小写;m (Multiline) 代表多行匹配,让 ^ 和 $ 可以分别定位每行的行首与行尾;s (Dot All) 允许点号 '.' 匹配换行符。
Q: 什么是正则表达式拒绝服务攻击 (ReDoS)?如何预防?
A: 当正则表达式包含大量嵌套分组、重叠交替以及贪婪量词(例如 (a+)+$)时,面对精心构造的不匹配长输入,正则引擎会发生天文数字级别的灾难性回溯(Catastrophic Backtracking),导致 CPU 满载假死。DevHub 通过文本长度截断与最多循环限制进行安全防死锁。
Q: 如何用正则准确匹配包含汉字中文字符的内容?
A: 基本中文字符的 Unicode 范围为 [\u4e00-\u9fa5]。若要匹配全汉字字符串,可使用 ^[\u4e00-\u9fa5]+$;在现代 ES2018+ 还可以使用 Unicode 属性转义 /\p{Script=Han}+/u。
Q: 贪婪匹配和非贪婪匹配有什么区别?
A: 量词(*、+、?、{n,m})默认贪婪,尽量多吃字符;后跟 ? 变为非贪婪,尽量少吃。例如对 "a"b"c",/".*"/ 一口吞到底,而 /".*?"/ 依次匹配出 "a" 与 "c"。提取成对符号之间的内容时几乎总应使用非贪婪。
Q: 正则的前瞻断言 (?=) 和 (?!) 是什么?
A: (?=x) 表示"此处后面必须是 x"但不消耗字符;(?!x) 表示"此处后面不能是 x"。常用于"后面跟着单位的数字""不含某词的行"等场景。ES2018 起还支持后行断言 (?<=) 与 (?<!)。