zoukankan      html  css  js  c++  java
  • 正则理解

    正则的理解

    1. 正则的懒惰性

    每一次在exec()中捕获的时候,只捕获第一次匹配的内容,而不往下捕获了。我们把这叫正则的懒惰性,每一次捕获的开始位置都是从0开始

     var reg=/d+/;

     var st="he45612llo12345"

    cosole.log(reg.exec(st))----结果:45612

    解决正则的懒惰性呢

    修饰符g

    正则的实例对象reg上有一个lastIndex属性 他是正则捕获的起始位置

     var reg=/d+/g;

     var st="he45612llo12345"

    cosole.log(reg.exec(st))----结果:45612

    cosole.log(reg.exec(st))----结果:12345

    cosole.log(reg.exec(st))----结果:null

    1. 正则的贪婪性

    每一次匹配都是按照最长的出结果,我们把这种功能叫正则的贪婪性

     

     var reg=/d+/;

     var st="hello12345"

    cosole.log(reg.exec(st))----结果:12345

    如何解决正则的贪婪性

    在元字符量词后面加?

     var reg=/d+?/g;

     var st="he45612llo12345"

    cosole.log(reg.exec(st))----结果:4,5,6,1,2,1,2,3,4,5

    补充 循环语句  for   for  in  while   do---while---

     var i=12;

    var num=null;

    while(i<11){

      sum=sum+i;

      i++;

    }

    console.log(sum)//先判断后执行

    结果:null;

     var i=12;

    var num=null;

    do{

      sum=sum+i;

      i++;

    }

    while(i<11)

    console.log(sum)//先判断后执行

    结果:12

    二 分组捕获 正则带()  在数分组的个数时从左往右

    var reg=/(a)(b)/ 就相当于大正则里面带了两个小正则

    第一组是(a) 第二组是(b)

    分组捕获的作用

    1. 改变优先级
    2. 分组引用  1,2

    2代表和第二个分组出现一模一样的内容,1代表和第一个分组出现一模一样的内容

     var reg/(w)1(w)2/

    var st="ssdd"

    var s=reg.test(st)

    console.log(s)

    Reg中的规则是第一个是一个分组 且是一个单词字符 第二个是个分组引用要求和第一组一模一样,第三个是第二个分组且是一个单词字符,第四个是一个分组引用,要求和第二组一模一样。

    3.分组捕获

    分组的捕获前提是正则存在分组,不仅把大正则的内容捕获到,把小正则的内容也捕获到。

     var reg=/(a)(b)/

    /ab/ /a/ /b/

    var st="absd"

    console.log(reg.exec(st))//ab,a,b

    怎样解除分组中分组捕获呢,如果你不想捕获某一个分组中的内容,在这个分组的前面加上?:就可以了

     var reg=/(a)(?:b)/

    /ab/ /a/ /b/

    var st="absd"

    console.log(reg.exec(st))//ab,a

  • 相关阅读:
    Fragment 总结
    Varnish缓存服务器的搭建配置手册
    关于页面缓存服务器的研究报告
    基于Html5的移动端开发框架的研究
    C#的Process类的一些用法
    c#中进程的使用
    C#反射(转载)
    进制的转换 以及十进制转换成x进制的代码
    算法及其复杂度
    cocos总结
  • 原文地址:https://www.cnblogs.com/mo123/p/10139164.html
Copyright © 2011-2022 走看看