正则表达式实战指南:开发者必备的文本处理利器

正则表达式(Regular Expression,简称 Regex)是一种强大的文本匹配工具,几乎所有编程语言和编辑器都支持。它语法简洁但功能强大,能在几行代码里完成几十行逻辑的文本处理工作。本文从核心语法到实战模式,带你系统掌握正则表达式。

一、为什么要学正则

正则表达式是开发者的瑞士军刀:

掌握正则能大幅提升文本处理效率,省下的时间都是自己的。

二、核心语法速查

2.1 字符匹配

2.2 位置锚点

2.3 量词

2.4 分组与引用

2.5 其他

三、JavaScript 中的正则方法

3.1 正则对象方法

const regex = /pattern/flags;

// test:测试是否匹配,返回布尔值
regex.test(str);

// exec:执行匹配,返回匹配数组或 null
regex.exec(str);

3.2 字符串方法

// match:返回匹配结果数组
str.match(/pattern/);

// matchAll:返回所有匹配的迭代器(需 g 标志)
[...str.matchAll(/pattern/g)];

// replace:替换匹配内容
str.replace(/pattern/g, replacement);

// search:查找第一个匹配的索引
str.search(/pattern/);

// split:按正则分割字符串
str.split(/pattern/);

3.3 常用修饰符(flags)

四、四大实用模式

4.1 邮箱验证

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
emailRegex.test('[email protected]'); // true

注意:完全符合 RFC 5322 标准的邮箱正则极其复杂,实际项目中用上面这个简单版即可,真正的验证靠发确认邮件。

4.2 手机号验证(中国大陆)

const phoneRegex = /^1[3-9]\d{9}$/;
phoneRegex.test('13812345678'); // true

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

4.3 URL 匹配

const urlRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g;

4.4 日期格式(YYYY-MM-DD)

const dateRegex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
dateRegex.test('2026-08-08'); // true

这个正则只能验证格式,不能验证日期有效性(比如 2026-02-30),还需要进一步用 Date 对象校验。

五、进阶技巧

5.1 贪婪与非贪婪

默认量词是贪婪的(匹配尽可能多的字符),加 ? 变为非贪婪:

const str = '
hello
world
'; // 贪婪 str.match(/
.*<\/div>/); // 匹配整个字符串 // 非贪婪 str.match(/
.*?<\/div>/g); // 分别匹配两个div

5.2 捕获组与替换

// 将日期从 YYYY-MM-DD 转为 DD/MM/YYYY
const date = '2026-08-08';
date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "08/08/2026"

5.3 命名捕获组

const match = '2026-08-08'.match(/(?\d{4})-(?\d{2})-(?\d{2})/);
console.log(match.groups.year); // "2026"

六、性能优化与避坑

七、推荐工具

DevToolHub 提供了一个正则表达式测试工具,可以实时测试匹配结果,支持标志位切换和匹配高亮,非常适合调试正则。

总结

正则表达式是一项需要刻意练习的技能。刚开始可能觉得符号多、记忆量大,但用得多了就会发现它的规律。记住:正则的核心是模式匹配,把你想要匹配的模式拆解成字符、量词、位置,一步步构建出来。配合在线工具调试,很快就能上手。