javascript正则之正向预查和反向预查

正向肯定预查:

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]
正则基础: 添加链接描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值