zoukankan      html  css  js  c++  java
  • 正则捕获的细节及replace分析

      1.var reg=/./与var reg=/./的区别?

      前者代表任意一个字符,

      后者代表这个字符串中得有一个点

      2.?的使用

      如果单独的一个字符后面带?

      代表1个或0个这个字符的出现;  列如: /d?/

      如果量词+后面带?  取消正则的贪婪性  在捕获的阶段

      3.捕获:

      1.普通捕获  正则的方法exec()  字符串的方法match()

        普通捕获有懒惰性:

        给正则添加一个修饰符g,可以解决;

        match是将所有捕获的内容放在一个数组中,并返回,match就是exec()对函数的简单封装

      2.分组捕获:还是正则的方法exec() 字符串的方法match()

        只不过正则结构发生了变化加()     (分两种捕获,全局和非全局)

      非全局  var reg=/(a)(b)/  exec()和match()在非全局下分组捕获相同的,分组捕获在捕获的过程中,即捕获大正则的内容,也捕获分组中的内容,并返回

      全局   var reg=/(a)(b)/g  exec()和match()在全局下的分组捕获是不一样的,exec()不变,但是match()只捕获到大正则的内容:

      3.分组的优势:

        1.可以提升优先级

        2.可以捕获引用

      捕获引用:

        1  代表分组1里面的内容:

        2  带标分组2里面的内容:

      分组必须在引用前,如果分组引用在分组前,就是普通的表达式// ???  

      案例:/((a)(b))/  第一组:先捕获大()  第二组:在捕获小()  第三组:在捕获小()  总结:分组捕获:先捕获大(),在捕获小()

      分组的结果存在正则(RegExp)的$number属性下:

      1和RegExp.$1二者,都是分组引用;

      1只能使用,在正则表达式里面,RegExp.$1可以外面使用,都是在捕获完成的条件下:

      4.在捕获的过程中,怎样取消捕获分组内:

        在分组的前面加上?:就ok了

        ?:和?=的区别:

          ?:  取消捕获分组的内容

          ?=  案例    var reg=/a(?=b)/  捕获字符a后面紧跟着b,只返回a

      replace细说:

        replace是字符串的一个方法,他又两个参数,用后者将前者替换掉,并返回新的字符串:

        不会改变原来的字符串;

      1.如果第一个参数是字符串,只改变一次:

      2.如果第一个参数是正则:捕获一次,改变一次:

      字符串案例:var st="hello123hello456";

           var ss=st.replace("hello","world");

           console.log(ss)  返回的结果为:world123hello456

      正则的案例:var st="hello123hello456";

            var reg=/hello/g

            var ss=st.replace(reg,"world")

            console.log(ss)  结果为: world123world456

      3.如果第二个参数是匿名函数,每次捕获1次,这个匿名函数就会执行1次:

        案例:var st="hello123hello456";

           var reg=/hello/g;

           var ss=st.replace(reg,function(){

              return "world"           (这个匿名函数有三个参数,0:"world"要替换的,1:从哪开始,2:"hello123hello456"  原字符串)

            })

           console.log(ss)    返回的结果为:world123world456

      如果以后想知道对象有几个参数就是用:console.log(arguments)

      return是什么就会返回什么,没有return就是undefined;

      

      

  • 相关阅读:
    MSSQL大量数据时,建立索引或添加字段后保存更改超时该这么办
    POJ 3261 Milk Patterns (后缀数组)
    POJ 1743 Musical Theme (后缀数组)
    HDU 1496 Equations (HASH)
    694. Distinct Substrings (后缀数组)
    POJ 1222 EXTENDED LIGHTS OUT (枚举 或者 高斯消元)
    POJ 1681· Painter's Problem (位压缩 或 高斯消元)
    POJ 1054 The Troublesome Frog (hash散列)
    HDU 1716 排列2
    HDU 4405 Aeroplane chess (概率DP & 期望)
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10145204.html
Copyright © 2011-2022 走看看