正则表达式(Regular Expression,简称 regex)是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。
一、正则表达式基础概念
什么是正则表达式? 它是由普通字符(如字母、数字)和特殊字符(称为元字符)组成的“规则字符串”,用来描述文本模式。例如:
\d
匹配数字,等价于[0-9]
\w
匹配字母、数字或下划线,等价于[A-Za-z0-9_]
.
匹配任意单个字符(除换行符)
核心用途
- 验证格式:如检查邮箱、电话号码是否合法。
- 搜索与替换:在文本中批量修改特定内容。
- 数据提取:从日志、HTML等文本中提取关键信息
二、基础语法速成
1. 常用元字符
元字符 | 说明 | 示例 |
---|---|---|
^ | 匹配字符串开头 | ^a 匹配以 "a" 开头的字符串 |
$ | 匹配字符串结尾 | a$ 匹配以 "a" 结尾的字符串 |
\d | 匹配数字 | \d+ 匹配连续数字(如 "123") |
\s | 匹配空白符(空格、制表符等) | \s+ 匹配多个空格 |
[] | 匹配括号内任意一个字符 | [aeiou] 匹配任意元音字母 |
* | 匹配前一个字符0次或多次 | a* 匹配 "a", "aa", ""(空) |
+ | 匹配前一个字符1次或多次 | a+ 不匹配空字符串 |
? | 匹配前一个字符0次或1次 | colou?r 匹配 "color" 或 "colour" |
2. 示例解析
匹配手机号(中国大陆):
^1[3-9]\d{9}$
^1
:以1开头[3-9]
:第二位是3-9\d{9}
:后面9位数字$
:结束
提取HTML标签:
<[^>]+>
<
和>
匹配标签的尖括号[^>]+
匹配除>
外的任意字符1次或多次
三、实战案例
1. 验证邮箱地址
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
\w+
:匹配用户名部分(字母/数字/下划线)([-+.]\w+)*
:可选的分隔符(如.
、-
)和后续字符@
和.
匹配邮箱固定符号
2. 从日志中提取错误信息
const log = "ERROR: File not found\nINFO: User logged in";
const errors = log.match(/^ERROR:.*$/gm);
// 结果: ["ERROR: File not found"]
^ERROR:.*$
:匹配以 "ERROR:" 开头的整行gm
标志:全局匹配 + 多行模式