JavaScript中的正则表达式通过字面量或构造函数创建,常用标志位有g、i、m、u;利用捕获组()提取数据,非捕获组(?:)提升性能;常见应用包括邮箱、手机号匹配,URL参数提取及空白行过滤;结合replace与函数可实现动态替换,如驼峰转短横线、数字加倍等;复杂场景建议结合其他方法以保持代码可读性。

JavaScript 中的正则表达式是处理字符串匹配和替换的强大工具。掌握一些实用的模式匹配技巧,能显著提升文本处理效率。下面介绍几种常见且高效的用法。
基本语法与标志位
在 JS 中,正则表达式可以用字面量或构造函数创建:
- /pattern/g —— 字面量形式,简洁直观
- new RegExp("pattern", "g") —— 动态构建时更灵活
常用标志位包括:
- g:全局匹配,查找所有匹配项
- i:忽略大小写
- m:多行模式,^ 和 $ 匹配每行开头结尾
- u:启用 Unicode 模式,正确处理 emoji 和特殊字符
捕获与分组技巧
使用括号 () 可以创建捕获组,提取感兴趣的部分。
例如,从日期字符串中提取年月日:
const dateRegex = /(d{4})-(d{2})-(d{2})/;const result = "2024-04-05".match(dateRegex);result 数组中,index 1~3 分别对应年、月、日。
若不需要捕获,可用非捕获组 (?:...) 提升性能:
/https?://(?:www.)?example.com/常用匹配模式实战
以下是一些高频使用场景及对应正则:
- 邮箱验证:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/
- 手机号(中国大陆):/^1[3-9]d{9}$/
- 提取 URL 参数:/(?<![?&])name=([^&]+)/ 匹配参数值
- 过滤空白行:/^s*$/m 配合 replace 删除空行
注意转义特殊字符,如点号 .、反斜杠 \。
replace 与函数替换
replace 方法结合正则和函数,可实现智能替换。
比如将驼峰命名转为短横线连接:
"myNameIsJohn".replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();或使用函数动态处理:
text.replace(/d+/g, match => parseInt(match) * 2);函数接收匹配内容作为参数,返回替换值,灵活性更强。
基本上就这些核心技巧。正则虽强大,但也别过度依赖。复杂场景建议结合字符串方法或专用库处理,保持代码可读性。










