2020-11-10 JS正则表达式笔记

                          

1、操作方法

 
 String str="abcd"
 String reg=\/w\
 str.match(reg);返回数组
 reg.test(str); 返回boolean
 reg.exec(str); 返回第一个,继续exec返回下一个

 2、字符预定义    

   \w(数字、字母、下划线) \W(非数字、字母、下划线)

  \d(数字) \D(非数字)

  \s(空白字符,可能是空格、制表符、其他空白) \S (非空白字符,可能是空格、制表符、其他空白)

  . (匹配除了换行,回车,段落结束符,行结束符之外的字符)

3、数量相关   {} ? * + (? 相当于 {0,1}, + 相当于 {1,} ,* 相当于{0,})
4、位置相关   ^(匹配开头) $(匹配结尾) \b(边界 即非\w的都是边界) \B(非边界)
5、括号相关   () [] {}
         
        5.1、 ():表示分组的意思 ,还可以提取值,match返回分组后的数组,还可以替换,还可以反响引用
         $1,$2,返回分组后的第一个年,第二个月等,拿到对应的值,$0匹配全局

                 let str="2020-01-02"
                 let reg=/(\d{4}-\d{2}-\d{2})/
                 str.match(reg)
                 console.log(RegExp.$1)  //2020
                 console.log(RegExp.$2)  //01
                 console.log(RegExp.$3)  //02    

                 //替换   

                 let str="2020-01-02" //01/02/2020
                 let reg=/(\d{4}-\d{2}-\d{2})/
                 let res=str.replace(reg,"$2/$3/$1")
                 //或者
                 res=str.replace(reg,function(arg,year,month,day){
                 return month+"/"+day+"/"+year
                 })
                 console.log(res)  //02

                //反向引用
                let className="news-container-nav";//news_container_nav
                let reg=/\w{4}(-|_)\w{9}(-|_)\w{3}/  //常规写法
                reg=/\w{4}(-|_)\w{9}(\1)\w{3}/      //反向引用 (\n) (这里是1,意思是和前面(-|_)的一致)
                let res=reg.test(className)
                console.log(res)
      
       5.2、 []:表示 字符集合;
              let str="My name is LiLei";
              let reg=/Li(L|l)ei/g
              reg=/Li[Ll]ei/g  //[Ll]相当于(L|l)
       
             console.log(reg.test(str));

              //注意以下必须是连续的ask2码连续,否则不行
             reg=/[0-9]/g; //匹配所有0-9之间的数字,给一段范围
             reg=/[a-z]/g; //匹配所有a-z之间的数字,给一段范围
             reg=/[A-Z]/g; //匹配所有A-Z之间的数字,给一段范围

             reg=/[^0-9]/g //^在集合里代表非

             \w 相当于[a-zA-Z0-9_]

6、匹配模式 g i m s u y
      6.1、g:全局匹配
      6.2、 i:忽略大小写
      let str="abCABc"
      let reg=/abc/gi;
      console.log(reg) //true
     6.3、m:多行模式
       let str="abc
       efg
       hij"
       let reg=/^\w/gm
       let res=str.replace(reg,"*") //每一行开头都匹配 *bc *fg *ij
      console.log(res)
     6.4、s:让"."去匹配换行    
          let str="abc
          efg";
          let reg=/^a.*g$/gs;
          console.log(reg.test(str))  //true
     6.5、u:匹配unicode编码
         let str="a"; //61
         let reg=/\u{61}/gu
         console.log(reg.test(str)) //true
      6.6、y:粘性模式

       let str="123fdfd45sa4324";
       let reg=/\d/g
       console.log(reg.exec(str))  //1
       console.log(reg.exec(str))  //2
       console.log(reg.exec(str))  //3
       console.log(reg.exec(str))  //4
       console.log(reg.exec(str))  //5

       let reg=/\d/gy //不连续的数字在粘性模式下不匹配
       console.log(reg.exec(str))  //1
       console.log(reg.exec(str))  //2
       console.log(reg.exec(str))  //3 已结束

7、命名分组及零宽断言
    7.1、命名分组
        let str="2020-01-06";
        let reg=/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
          //match返回的对象中groups里面定义了 自定义名称和对应的值,如下:
          // year:2020
          //month:01
          //day:06

        console.log(str.match(reg))
    7.2、零宽断言
       正向肯定零宽断言
       let str="iphone3iphone4iphone5iphonenumber";
       //肯定
       let reg=/iphone(?=\d)/g;
      //否定
      let reg=/iphone(?!\d)/g;
      let res=str.replace(reg,"苹果")

      负向肯定零宽断言
      let str="10px20px30pxipx";
      //肯定
      let reg=/(?<=\d)px/g;
      //否定
      let reg=/(?<!\d)px/g;
      let res=str.replace(reg,"像素")
      console.log(res)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值