【正则表达式】 正则表达式断言(Assertion)是什么?
🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)
🌵目录🌵
- 前言
-
- **断言的特点**
- 🍯一、断言的类型
-
- 🧉1.1. 先行断言(Lookahead Assertions)
-
- 🧃1.1.1.**正向先行断言(Positive Lookahead)**
- 🥤1.1.2.**负向先行断言(Negative Lookahead)**
- 🥃1.2. 后行断言(Lookbehind Assertions)
-
- 🍹1.2.1.**正向后行断言(Positive Lookbehind)**
- 🍸1.2.2.负向后行断言(Negative Lookbehind)
- 🍷二、断言的应用场景
-
- 🍶2.1. 密码强度验证
- ☕2.2. 提取特定格式的数据
- 🥛2.3. 替换特定模式的文本
- 🍼三、断言的执行原理
- 🍇四、常见问题与解决方案
-
- 🍉4.1.问题1:后行断言浏览器兼容性
- 🍊4.2.问题2:断言性能问题
- 🤝 期待与你共同进步
- 📚 参考文档
前言
断言(Assertion)是正则表达式中用于指定匹配位置的元字符,它们不匹配任何实际字符,而是匹配字符之间的位置。
简单来说,断言就是"条件",它要求目标字符串必须满足某些条件,但不会消耗字符。
断言的特点
零宽度
:不占用匹配字符的位置条件检查
:只检查是否满足特定条件不影响匹配结果
:仅作为匹配的约束条件
// 示例:匹配后面跟着"bar"的"foo"
const regex = /foo(?=bar)/;
console.log(regex.test("foobar")); // true
console.log(regex.test("food")); // false
🍯一、断言的类型
正则表达式中的断言主要分为两大类四种类型:
🧉1.1. 先行断言(Lookahead Assertions)
检查当前位置之后是否匹配特定模式
🧃1.1.1.正向先行断言(Positive Lookahead)
语法:(?=pattern)
匹配后面跟着 pattern 的位置。
// 匹配后面跟着数字的字母
const regex = /[a-z](?=\d)/;
console.log("a1".match(regex