正则表达式为什么难学
正则表达式(Regex)像一门"外星语言",一串符号看得人头晕。但它处理文本的能力无可替代——验证邮箱、提取数据、批量替换,几行正则顶几十行代码。关键是掌握常用模式,用到时能查到就行,不必全背。
常用正则速查表
验证类
| 用途 | 正则模式 |
|---|---|
| 邮箱 | ^[\w.-]+@[\w.-]+.\w+$ |
| 手机号(中国大陆) | ^1[3-9]\d{9}$ |
| URL | ^https?://[\w.-]+(:\d+)?(/.*)?$ |
| 身份证号(18 位) | ^\d{17}[\dXx]$ |
| IP 地址 | ^(\d{1,3}.){3}\d{1,3}$ |
提取类
| 用途 | 正则模式 |
|---|---|
| 提取所有数字 | \d+ |
| 提取 HTML 标签内容 | <(tag)>(.*?)</\1> |
| 提取链接 | https?://[\w./?=&%-]+ |
| 提取中文 | [\u4e00-\u9fa5]+ |
替换类
| 用途 | 正则 → 替换 |
|---|---|
| 去除空白行 | 连续换行+空白 → 单换行 |
| 手机号脱敏 | 中间四位替换为 **** |
| 驼峰转下划线 | 大写字母前加下划线 |
DocsAll 正则测试工具
用 正则测试工具 实时调试:
- 打开 正则测试工具
- 输入正则表达式,选择标志(g 全局、i 忽略大小写、m 多行)
- 粘贴测试文本
- 实时高亮查看匹配结果
边写边测,比盲写正则效率高得多。更多正则基础可看正则表达式教程。
常用元字符速记
- . 任意字符(除换行)
- \d 数字,\w 字母数字下划线,\s 空白
- ^ 行首,$ 行尾
- ***** 0 次或多次,+ 1 次或多次,? 0 或 1 次
- {n,m} n 到 m 次
- [] 字符集,() 分组,| 或
调试技巧
分段测试
复杂正则一段段写,每加一段测试一次,定位问题更容易。
善用非贪婪
贪婪匹配会匹配太多,非贪婪匹配(量词后加 ?)匹配最少,提取内容时常用。
注意转义
匹配 .、*、? 等元字符本身要加反斜杠转义,如匹配点号用 .
别过度依赖正则
解析复杂 HTML/JSON 用正则容易出错,该用解析器就用解析器。正则适合规则明确的文本匹配。
建议
把常用正则整理成自己的速查表,用到时复制改改就行。配合测试工具实时验证,正则没那么难。