正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串中字符组合的模式。它广泛应用于文本搜索、替换、验证、数据提取等场景,几乎所有编程语言和文本编辑器都支持正则表达式。掌握正则表达式,可以让您的文本处理效率提升数倍。
一、什么是正则表达式
简单来说,正则表达式就是一套"匹配规则",用特定的符号描述您想要找的文本模式。例如,\d+ 表示匹配一个或多个数字,[\w.-]+@[\w.-]+\.\w+ 可以匹配邮箱地址。
正则表达式的优势在于:
- 表达力强:用简短的表达式描述复杂的匹配规则
- 通用性好:几乎所有编程语言和工具都支持
- 效率高:一次匹配可以完成复杂的文本处理
二、基础语法
1. 普通字符
字母、数字、汉字等普通字符在正则表达式中匹配自身。例如,正则 hello 可以匹配文本中的 "hello"。
2. 元字符
元字符是正则表达式中具有特殊含义的字符,是正则表达式的核心:
.— 匹配任意单个字符(除换行符外)\d— 匹配数字,等价于[0-9]\w— 匹配单词字符(字母、数字、下划线),等价于[a-zA-Z0-9_]\s— 匹配空白字符(空格、制表符、换行等)^— 匹配字符串开头$— 匹配字符串结尾\b— 匹配单词边界
3. 量词
量词用于指定前面的字符或组重复出现的次数:
*— 0 次或多次+— 1 次或多次?— 0 次或 1 次{n}— 恰好 n 次{n,}— 至少 n 次{n,m}— n 到 m 次
示例:
a*— 匹配 0 个或多个 a\d+— 匹配 1 个或多个数字colou?r— 匹配 color 或 colour(u 可选)\d{4}— 匹配恰好 4 位数字
4. 字符集
用方括号 [] 定义字符集,匹配方括号中的任意一个字符:
[abc]— 匹配 a、b 或 c 中的任意一个[a-z]— 匹配任意小写字母[a-zA-Z]— 匹配任意字母[0-9]— 匹配任意数字[^abc]— 匹配除 a、b、c 以外的任意字符(^ 在方括号内表示取反)
5. 分组与捕获
用圆括号 () 将多个字符组合为一个整体,称为分组。分组还可以捕获匹配到的内容,供后续引用:
(abc)+— 匹配一个或多个 "abc"(\d{4})-(\d{2})-(\d{2})— 匹配日期,并分别捕获年、月、日(?:abc)— 非捕获组,只分组不捕获
6. 选择符
用竖线 | 表示"或",匹配左边或右边的表达式:
cat|dog— 匹配 cat 或 doghttps?://— 匹配 http:// 或 https://
三、标志位
标志位用于修改正则表达式的匹配行为,常用的有:
g(global)— 全局匹配,找到所有匹配而不是第一个i(ignoreCase)— 忽略大小写m(multiline)— 多行模式,^ 和 $ 匹配每行的开头和结尾s(dotAll)— 让 . 匹配换行符u(unicode)— Unicode 模式,正确处理 Unicode 字符
四、实战示例
1. 匹配邮箱
正则:[\w.-]+@[\w.-]+\.\w+
说明:用户名部分由字母、数字、下划线、点、连字符组成,然后是 @,域名部分,最后是点加顶级域名。
2. 匹配手机号
正则:1[3-9]\d{9}
说明:以 1 开头,第二位是 3-9,后面跟 9 位数字,共 11 位。
3. 匹配 URL
正则:https?://[^\s]+
说明:以 http:// 或 https:// 开头,后面跟一个或多个非空白字符。
4. 匹配日期
正则:\d{4}-\d{2}-\d{2}
说明:4 位年份-2 位月份-2 位日期,如 2026-09-20。
5. 匹配 IP 地址
正则:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
说明:4 组 1-3 位数字,用点分隔。更严格的版本需要限制每组 0-255。
6. 替换示例:交换日期格式
正则:(\d{4})-(\d{2})-(\d{2})
替换为:$3/$2/$1
效果:2026-09-20 → 20/09/2026
五、学习建议
1. 多练习:正则表达式需要大量练习才能熟练。使用在线正则测试工具,边写边看效果。
2. 从简单开始:先掌握基础语法,再逐步学习高级特性如断言、递归等。
3. 善用工具:使用正则测试工具的高亮和详情功能,理解每一步匹配的过程。
4. 参考常用正则:邮箱、手机号、URL 等常用正则有成熟的写法,可以直接参考和修改。
结语
正则表达式是一项值得投入时间学习的技能。虽然初期学习曲线较陡,但掌握后可以在文本处理、数据提取、代码重构等场景中大幅提升效率。建议使用 Toolso 在线正则表达式测试工具,配合本文的示例,边学边练,快速掌握正则表达式。