正则匹配 之环视(?=pattern)(?!pattern)等理解

1、环视

首先需要了解 什么是环视:

顾名思义 环视 就是环顾四周

本质 :环视不匹配任何字符,只匹配文本中的特定位置

环视 只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的。环视匹配的最终结果就是一个位置。

环视一共有四种:(?=pattern)、(?!pattern)、(?<=pattern)、(?<!pattern)
逆序环视:(?<=pattern) 、(?<!pattern)
顺序环视: (?=pattern)、(?!pattern)

*注:*(?:pattern)虽然长得和上述四个挺像的但不属于一类的,(?:pattern)最大的区别就是**匹配且占字符**。也就是会消耗字符。(?:pattern)是非获取匹配。
实例:

str = ‘fff123456 abcd123def’

1、匹配 字符cd后面的数字123

逆序环视 (肯定)(?<=pattern)

str.match(/(?<=cd)123/)

在这里插入图片描述

2、匹配 后面紧接456的数字 123

顺序环视(肯定)(?=pattern)

str.match(/123(?=456)/)

在这里插入图片描述

3、将金额 如1234567890替换为 1,234,567,890

逆序环视+顺序环视

var str = '1234567890'
str.replace(/(?<=\d)(?=(\d{3})+$)/g,',')
=>"1,234,567,890"
4、字符串 aaa123fff123ddd ,匹配前面不是a的数字123

逆序环视(否定)(?<=pattern)

var str = 'aaa123fff123ddd'
str.match(/(?<!a)123/) 

在这里插入图片描述

5、字符串 aaa123fff123ddd ,匹配后面接的不是d的数字123

顺序环视(否定)(?!pattern)

var str = 'aaa123fff123ddd'
str.match(/123(?!d)/) 

在这里插入图片描述

本质 :环视不匹配任何字符,只匹配文本中的特定位置
本质 :环视不匹配任何字符,只匹配文本中的特定位置
本质 :环视不匹配任何字符,只匹配文本中的特定位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值