js-正则量词?=n用法

前言

定义和用法
?=n 量词匹配任何其后紧接指定字符串 n 的字符串。

1
2
3
var str="hello world";
var patt1=/ll(?=o)/g;
console.log(str.match(patt1));

匹配到

1
[ll]    

(?=o) 起到了 辅助定位作用…

某正则解析

1
2
3
4
var str = "12345678";

var patt = /\B(?=(...)+$)/g;
console.log(str.replace(patt,","));

解释说明:

为了方便说明, 使用@表示非边界内容

/B 匹配到 所有非边界内容, 即 @ , @是看不见的
1@2@3@4@5@6@7@8

(?=(…)) 这句匹配 任意三个数字, 起到辅助定位作用

因此 /B(?=(…))/g
匹配到
234
345
456
@567
@678
@78 不满足条件所以不匹配
匹配到的条件替换成 “,” 因此结果是 1,2,3,4,5,678

再加上 $ 变成/B(?=(…)$)/g

$ 表示结尾

因此只能匹配到
678
匹配到的条件替换成 “,” 因此结果是12345,678

再加上 + 变成 /B(?=(…)+$)/g

+表示 一个或者多个

因此匹配到
678
345678 即 345678前面的非边界内容@, ?=n 只是起到辅助定位作用
@12 345 678 不满足条件不匹配

匹配到的条件替换成 “,” 因此结果是12,345,678

参考

某大佬的。。。