返回列表
正则表达式常用技巧
自由客七维 2026-03-18 19:13 29

实用正则表达式收集

本文整理了日常开发中最常用的正则表达式,涵盖表单验证、数据提取、文本清理等场景,并附带简要说明。

一、表单验证

1. 验证邮箱

/^[w.-]+@[w.-]+.w+$/

说明:支持常见的邮箱格式,如 name@example.com、user.name@sub.example.co.uk 等。

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

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

说明:匹配以1开头,第二位为3-9,后面9位数字的手机号。

3. 验证身份证号(18位)

/^[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]$/

说明:粗略验证格式,包括出生日期和校验位。

4. 验证网址(URL)

/^https?://[w-]+(.[w-]+)+[/#?]?.*$/i

说明:匹配 http 或 https 开头的网址。

5. 验证整数或小数

/^-?d+(.d+)?$/

说明:可选负号,整数部分至少一位,小数部分可选。

二、数据提取

1. 从文本中提取所有数字

/d+/g

2. 提取中文字符

/[u4e00-u9fa5]/g

3. 提取 HTML 标签中的文本

/<[^>]*>([^<]*)]*>/g

说明:需配合分组获取标签内容。

4. 提取日志中的 IP 地址

/(?:[0-9]{1,3}.){3}[0-9]{1,3}/g

说明:简单的 IPv4 匹配,更严格的版本可参考前面 IP 地址验证。

三、文本替换与清理

1. 去除多余空格(首尾空格)

/^s+|s+$/g

替换为:空字符串

2. 将连续多个空格替换为单个空格

/s+/g

替换为:一个空格

3. 日期格式转换(yyyy-mm-dd → dd/mm/yyyy)

/(d{4})-(d{2})-(d{2})/

替换为:$3/$2/$1

4. 隐藏手机号中间四位

/(d{3})d{4}(d{4})/

替换为:$1****$2

四、高级技巧

1. 使用分组捕获和反向引用

反向引用可以在正则表达式中引用前面捕获组的内容。例如,匹配重复的单词:(w+)s+1 可匹配 "hello hello"。

2. 零宽断言(Lookahead / Lookbehind)

  • 正向先行断言 (?=...):匹配后面跟着指定模式的位置。例如 d+(?=px) 匹配 "12px" 中的 "12"(不包含 px)。
  • 负向先行断言 (?!...):匹配后面不跟着指定模式的位置。
  • 正向后行断言 (?<=...):匹配前面是指定模式的位置(需要较新 JavaScript 支持)。
  • 负向后行断言 (?:匹配前面不是指定模式的位置。

示例: 从价格中提取数字,但排除折扣价:(?<=¥)d+ 匹配 "¥100" 中的 100(假设支持后行断言)。

3. 忽略大小写、全局匹配等标志

在 JavaScript 中,正则表达式后可以跟标志:g(全局)、i(忽略大小写)、m(多行)、s(点号匹配换行)、u(Unicode)、y(粘附)。

五、常见错误与调试

  • 忘记转义特殊字符:如要匹配 . 本身,应写作 .
  • 量词范围错误:如 {1,3} 不能写成 {1, 3}(有空格)。
  • 贪婪匹配导致意外结果:记得使用非贪婪版本 ?
  • 分组未捕获:使用 (?:...) 表示非捕获分组。

掌握这些技巧后,您可以在开发中更高效地处理字符串。建议多使用在线工具测试并收藏常用正则片段。