正则表达式速查手册与实战技巧

正则表达式(Regular Expression,简称 Regex)是开发者工具箱中最强大也最令人头疼的武器之一。说它强大,是因为它能用短短几行模式匹配完成复杂的文本处理任务;说它头疼,是因为它的语法晦涩难懂,写出的正则表达式往往连自己几天后都看不懂。

本文整理了正则表达式的核心语法速查表和实战技巧,配合在线练习工具使用,帮你从入门到精通。

一、正则表达式基础

什么是正则表达式

正则表达式是一种描述文本模式的语法规则,可以用来:

几乎所有编程语言和文本编辑器都支持正则表达式,掌握它能极大提升文本处理效率。

二、核心语法速查表

1. 字符类

2. 量词

3. 位置锚点

4. 分组与引用

5. 断言

6. 其他

三、常用正则表达式模板

1. 邮箱验证

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

这是一个基础的邮箱验证正则。注意:完全符合 RFC 5322 标准的邮箱正则非常复杂,实际使用中这个基础版本通常足够。

2. 手机号验证(中国大陆)

^1[3-9]\d{9}$

匹配以 1 开头,第二位为 3-9,总共 11 位的手机号。

3. URL 验证

https?:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/\S*)?$

匹配 http 或 https 开头的 URL。根据需求可调整严格程度。

4. IPv4 地址

^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$

5. 日期格式(YYYY-MM-DD)

^\d{4}-\d{2}-\d{2}$

6. HTML 标签

<([a-z]+)>[\s\S]*?<\/>

匹配成对的 HTML 标签。注意:用正则解析 HTML 不是好主意,复杂场景请使用 DOM 解析器。

7. 中文字符

[一-龥]

匹配常见的中文字符(基本多文种平面中的汉字)。

四、实战技巧

1. 贪婪 vs 非贪婪

默认情况下,*+ 是贪婪匹配,会尽可能多地匹配字符。在后面加上 ? 就变成非贪婪匹配,尽可能少地匹配。

例如:对于字符串 <div>hello</div><div>world</div>

2. 写正则的步骤

  1. 先明确要匹配的模式,用自然语言描述出来
  2. 拆分模式,找出其中的固定部分和可变部分
  3. 逐步构建正则,每一步都测试验证
  4. 考虑边界情况和异常输入
  5. 添加注释,方便日后维护

3. 调试技巧

五、性能优化

正则表达式如果写得不好,可能导致严重的性能问题(回溯风暴)。以下是一些优化建议:

六、学习资源与工具

在线练习工具

学习建议

总结

正则表达式是一把双刃剑:用得好可以极大提升效率,用不好则可能带来性能问题和维护噩梦。掌握核心语法、理解工作原理、遵循最佳实践,是用好正则的关键。

希望这份速查手册能成为你日常开发中的好帮手。建议收藏本文,遇到正则问题时随时查阅。也可以用 DevToolHub 的正则测试工具进行实时练习,熟能生巧。