正则表达式入门与实战指南
发布日期:2026年5月28日 | 阅读时间:8分钟
正则表达式(Regular Expression,简称 Regex 或 RegExp)是处理文本的强大工具。无论是数据验证、文本提取还是批量替换,正则表达式都能高效完成任务。本文将从基础语法讲起,结合实际案例,帮助您掌握这一核心技能。
为什么学习正则表达式?
正则表达式在以下场景中非常有用:
- 表单验证:验证邮箱、手机号、身份证号等格式
- 数据提取:从文本中提取特定信息(如URL、日期)
- 文本替换:批量替换符合模式的文本
- 日志分析:从日志文件中提取关键信息
- 爬虫开发:从网页中提取数据
基础语法
1. 字符匹配
| 模式 | 说明 | 示例 |
|---|---|---|
. | 匹配任意单个字符(除换行符) | a.c 匹配 "abc", "a1c" |
\d | 匹配数字 [0-9] | \d\d 匹配 "12", "34" |
\w | 匹配字母、数字、下划线 | \w+ 匹配 "hello_123" |
\s | 匹配空白字符 | a\sb 匹配 "a b" |
2. 量词
| 量词 | 说明 | 示例 |
|---|---|---|
* | 匹配 0 次或多次 | ab*c 匹配 "ac", "abc", "abbc" |
+ | 匹配 1 次或多次 | ab+c 匹配 "abc", "abbc"(不匹配 "ac") |
? | 匹配 0 次或 1 次 | colou?r 匹配 "color", "colour" |
{n} | 匹配恰好 n 次 | \d{3} 匹配 "123" |
{n,m} | 匹配 n 到 m 次 | \d{2,4} 匹配 "12", "1234" |
3. 位置锚点
| 锚点 | 说明 | 示例 |
|---|---|---|
^ | 匹配字符串开头 | ^Hello 匹配以 "Hello" 开头的字符串 |
$ | 匹配字符串结尾 | world$ 匹配以 "world" 结尾的字符串 |
\b | 匹配单词边界 | \bword\b 匹配完整的单词 "word" |
常用正则表达式模板
邮箱验证
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
说明:匹配标准邮箱格式,如 user@example.com
手机号验证(中国大陆)
^1[3-9]\d{9}$
说明:匹配以 1 开头,第二位是 3-9,后面跟着 9 位数字
URL 提取
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
说明:匹配 http 或 https 开头的 URL
HTML 标签提取
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)
说明:匹配完整的 HTML 标签及其内容
标志(Flags)
| 标志 | 说明 | 示例 |
|---|---|---|
g | 全局匹配(找到所有匹配项) | /hello/g |
i | 忽略大小写 | /hello/i 匹配 "Hello", "HELLO" |
m | 多行模式 | ^hello/m 匹配每行开头的 "hello" |
s | 点号匹配换行符 | /a.b/s 匹配 "a\nb" |
实战案例
案例 1:提取字符串中的所有数字
const text = "价格是 123 元,数量 45 个";
const numbers = text.match(/\d+/g);
// 结果: ["123", "45"]
案例 2:验证密码强度
// 至少8位,包含大小写字母和数字
const strongPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/;
strongPassword.test("MyPass123"); // true
strongPassword.test("weak"); // false
案例 3:清理 HTML 标签
const html = "<p>Hello <b>World</b></p>";
const text = html.replace(/<[^>]*>/g, '');
// 结果: "Hello World"
使用我们的正则测试器
我们的在线正则表达式测试器提供以下功能:
- 实时预览:输入正则表达式和测试文本,立即看到匹配结果
- 高亮显示:匹配到的内容会高亮显示,便于查看
- 内置模板:提供常用正则表达式模板,一键使用
- 多标志支持:支持 g、i、m、s 等标志
立即体验:使用正则表达式测试器
学习建议
- 多练习:正则表达式需要大量练习才能熟练掌握
- 使用工具:使用在线测试工具验证正则表达式
- 参考文档:保存常用正则表达式模板
- 逐步构建:复杂正则可以分步构建和测试
本文最后更新于 2026年5月28日