正则向前查找——断言

断言表达式

‘?=’正向向前查找

‘?!’负向向前查找

‘?<=’正向向后查找

‘?<!’负向向后查找

先举个列子

var str = '我爱你 我爱 想爱 爱 爱你'
var res = str.match(/爱(?=你)/g)// ["爱", "爱"]
var res = str.match(/爱(?!你)/g)//["爱", "爱", "爱"]
var res = str.match(/(?<=我)爱/g)//["爱", "爱"]
var res = str.match(/(?<!我)爱/g)//["爱", "爱", "爱"]

 下面用大白话阐述说明

 str.match(/爱(?=你)/g):爱字后面要有你

 str.match(/爱(?!你)/g):爱字后面不要你

 str.match(/(?<=我)爱/g):爱字前面要有我

 str.match(/(?<!我)爱/g):爱字前面不要我

let uu = 'http://www.baidu.com'
let res = uu.match(/.+(?=:)/)
console.log(res)

 

//----------控制台输出----------------
0: "http"
groups: undefined
index: 0
input: "http://www.baidu.com"
length: 1

这种查找方式只是找到即可,返回的结果中不会体现找到了“:”本身,即没有消费,而(:)匹配则会返回“:”本身,即消费了,但每次都消费,即浪费时间和资源,也存在不必要的隐患

let str = 'I buy paid $30 for 100 apples'
let res = str.match(/(?!\$)\d+/)
console.log(res)

使用负向向前查找得到结果

//------------控制台输出-------------------
0: "30"
groups: undefined
index: 12
input: "I buy paid $30 for 100 apples"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值