正则表达式
正则表达式(Regular Expression)是文本处理的"瑞士军刀"——表单验证、日志解析、数据清洗、代码重构中的查找替换,正则无处不在。但正则的语法晦涩难读,写错一个字符就完全匹配不到。实时反馈是调试正则的最有效方式。
这个工具提供实时匹配高亮、捕获分组展示、匹配位置定位和语法错误提示。支持 g/i/m/s/u/y 全部 6 种 flags。输入正则和测试文本,毫秒级看到匹配结果——所见即所得。
//gm
📖 正则表达式测试工具使用说明
什么是正则表达式?
正则表达式(Regular Expression,简称 regex 或 regexp)是一种描述字符串匹配模式的语法。它诞生于 1950 年代,由数学家 Stephen Kleene 提出,现在几乎所有编程语言都内置了正则支持。正则的核心价值在于用一行表达式替代几十行字符串处理代码——验证邮箱格式、提取日志中的 IP 地址、批量替换文本中的日期格式,都可以用一个正则表达式完成。6 种 Flags 详解
- g(global):全局匹配。没有 g 时只匹配第一个结果,加上 g 后匹配所有结果。大多数查找和替换场景都需要 g。
- i(case-insensitive):忽略字母大小写。/hello/i 可以匹配 Hello、HELLO、heLLo。
- m(multiline):多行模式。^ 和 $ 不仅匹配整个字符串的开始和结束,还匹配每一行的行首和行尾。
- s(dotAll):点号匹配所有字符,包括换行符 \n。没有 s 时 . 不匹配换行符——这是新手最容易踩的坑之一。
- u(unicode):Unicode 模式。启用后支持 \u{XXXXX} 语法和 Unicode 属性转义(如 \p{Script=Han} 匹配中文)。处理中文和 emoji 时必须开启。
- y(sticky):粘性匹配。从正则的 lastIndex 位置开始匹配,且必须刚好在该位置匹配成功。用得较少,主要用于 tokenizer 场景。
常用正则速查
邮箱:[\w.-]+@[\w.-]+\.\w+
手机号:1[3-9]\d{9}
身份证:\d{17}[\dXx]
IP地址:\d{1,3}(\.\d{1,3}){3}
URL:https?://[^\s]+
日期(yyyy-mm-dd):\d{4}-\d{2}-\d{2}
中文:[\u4e00-\u9fa5]+
空白行:^\s*$
常见错误
- 忘记转义特殊字符:. * + ? [ ] ( ) {{ }} ^ $ | \ / 这些字符在正则中有特殊含义。如果要匹配字面值,必须用 \ 转义:匹配 1+1=2 的正则是 1\+1=2。
- 贪婪匹配导致匹配过多:.* 默认是贪婪的,会尽可能多地匹配。link 用 .* 会一次匹配全部而非单个标签。改为 .*? 使用惰性匹配。
- 未考虑 Unicode:\w 默认只匹配 [a-zA-Z0-9_],不包含中文。要匹配中文需显式加 [\u4e00-\u9fa5] 或开启 u flag 用 Unicode 属性。
- 灾难性回溯(Catastrophic Backtracking):嵌套量词如 (a+)+b 在匹配 aaaaaaaaaaaaa 且不匹配时会指数级回溯,导致浏览器卡死。避免嵌套量词。