(?=a)与(?!a)代表什么意思

本文详细介绍了正则表达式的四种断言:零宽正向先行断言(?=a)、零宽负向先行断言(?!a)、零宽正向后行断言(?<=a)和零宽负向后行断言(?<!a),通过实例解释了它们如何匹配字符串中特定位置,并提供了直观的理解方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式的先行断言及后行断言

一共分为四种

  • (?=a) 零宽正向先行断言
  • (?!a)零宽负向先行断言
  • (?<=a)零宽正向后行断言
  • (?<!a)零宽负向后行断言

专业术语听起来确实有点云里雾里,通俗的讲就是匹配某个位置,位置指某个字符的左边或右边,零宽指的是不替换字符左右的字符,而是插入该位置。

(?=a) 零宽正向先行断言

该正则匹配某字符前面的位置。

let reg = /(?=o)/g
let str = 'hello world'
let s = str.replace(reg,'A')
console.log(s)    //输出hellAo wAorld
复制代码

经过上面的代码可以看到,A匹配到了o前面的位置

let reg = /l(?=o)/g
let str = 'hello world'
let s = str.replace(reg,'A')
console.log(s)     //输出helAo world
复制代码

该正则匹配后面紧跟o的l字符,只有第二个l满足该条件,所以被替换</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值