⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

JS正则表达式进阶:分组、前瞻与替换

学习正则表达式中的捕获组、非捕获组、前瞻断言以及高级替换模式。 · 难度:入门 · +15XP

正则表达式进阶技巧

正则表达式是处理字符串的利器。除了基础的模式匹配,掌握分组、断言和替换策略能让你写出更强大的匹配逻辑。

1. 捕获组 ( )

圆括号用于创建捕获组,既可用于分组,也可提取匹配的子串。

const date = '2025-04-01';
const match = date.match(/(\d{4})-(\d{2})-(\d{2})/);
console.log(match[1]); // '2025'
console.log(match[2]); // '04'

2. 非捕获组 (?: )

当只需要分组而不需要提取时,使用 (?:...) 提高性能。

const str = 'abc123';
const regex = /(?:abc|def)(\d+)/;
console.log(str.match(regex)[1]); // '123'

3. 前瞻断言

const prices = '$10 $20 €30';
// 匹配以 $ 开头的数字
console.log(prices.match(/\d+(?=\$)/g)); // ['10', '20']

4. 高级替换

replace 中可以使用 $1$2 引用捕获组,还能传入回调函数。

模式说明
$1引用第一个捕获组
$&匹配的整个字符串
function对每个匹配执行函数
// 将日期格式从 YYYY-MM-DD 转为 DD/MM/YYYY
const date = '2025-04-01';
const reformatted = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
console.log(reformatted); // '01/04/2025'

练习提示

右侧有一个字符串,包含了多个邮箱地址。请使用正则表达式提取出所有邮箱的用户名部分(@之前的内容),并替换邮箱域名为 @example.com

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0