正向肯定预查:
let reg = /.(?=....)/g;
let str = "abcdef";
console.log(str.match(reg)); //['a', 'b']
(?=…) 是一个“正向预查”,表示必须要有后面紧随的四个字符。这个预查部分并不消耗实际的字符,也就是说在匹配过程中不会被作为结果输出。
正向否定预查:
let rule = /.(?!....)/g;
let new_str = "abcdef";
console.log(new_str.match(rule));//['c','d','e','f']
(?!..)表示匹配后面没有紧随四个字符。
反向肯定预查:
//反向肯定预查
let exp = /.(?<=....)/g;
let str2 = "abcdef";
console.log(str2.match(exp)); // ["d", "e", "f"];
从后往前查找紧随四个字符的,包含本身
反向否定预查
let reg2 = /.(?<!....)/g;
let new_str2 = "abcdef";
console.log(new_str2.match(reg2)); //['a', 'b', 'c']
从后往前查找没有紧随四个字符的,不包含本身
使用正向肯定预查实现一个千位分隔符
let num = "9999999999";
let g = num.replace(/\d{1,3}(?=(\d{3})+$)/g, "$&,");
console.log("g:", g); //9,999,999,999
$& 通常用在替换字符串的场景中, 表达每一次被命中的部分内容. 另外还其它有意义的字符组合如下:
$$插入一个 "$"
$&插入匹配的子串
$`插入当前匹配的子串左边的内容
$'插入当前匹配的子串右边的内容
$n假如第一个参数是 RegExp对象, 并且 n 是个小于100的非负整数,
那么插入第 n 个括号匹配的字符串. 提示: 索引是从1开始. 如果不存在第 n个分组,
那么将会把匹配到到内容替换为字面量. 比如不存在第3个分组,
就会用"$3"替换匹配到的内容$Name这里Name 是一个分组名称.
如果在正则表达式中并不存在分组(或者没有匹配), 这个变量将被处理为空字符串.
只有在支持命名分组捕获的浏览器中才能使用。
补充一个知识点 toLocaleString 数值转千分符
let num = 9999999999.99;
console.log(num.toLocaleString()); // 9,999,999,999.99
来源出处:[https://www.zhihu.com/question/519758290/answer/2372262972]
正则基础: 添加链接描述
659

被折叠的 条评论
为什么被折叠?



