⚡ 编程实验室🏗️ 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. 断言(Assertions)

断言用于匹配位置而非字符。

类型语法示例
正向先行断言(?=...)\d(?=px) 匹配后跟 px 的数字
负向先行断言(?!...)\d(?!px) 匹配后不跟 px 的数字
正向后顾断言(?<=...)(?<=\$)\d+ 匹配 $ 后的数字
负向后顾断言(?(? 匹配非 $ 后的数字

2. 分组与反向引用

// 捕获分组
const regex = /(\w+)\s\1/;  // 匹配重复单词
console.log("hello hello".match(regex)); // ["hello hello", "hello"]

// 非捕获分组 (?:...) const nonCapture = /(?:https?:\/\/)?(\w+\.\w+)/; console.log("https://example.com".match(nonCapture));

// 命名分组 (ES2018) const named = /(?<year>\d{4})-(?<month>\d{2})/; const result = "2024-03".match(named); console.log(result.groups.year); // "2024"

3. 贪婪与懒惰匹配

const str = "<div>内容</div><span>其他</span>";

// 贪婪模式(默认):尽可能多匹配 console.log(str.match(/<.+>/)); // "<div>内容</div><span>其他</span>"

// 懒惰模式:尽可能少匹配 console.log(str.match(/<.+?>/)); // "<div>"

4. 性能优化建议

练习提示

修改 starter_code 中的正则表达式,尝试匹配所有以 .jpg 结尾的 URL,或提取 HTML 标签内的文本内容。

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

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0