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)/)