zoukankan      html  css  js  c++  java
  • javascript高级编程笔记03(正则表达式)

    • 引用类型
    1. 检测数组

      注:我们实际开发中经常遇到要把数组转化成以逗号隔开,我以前都是join来实现,其实又更简单的方法可以用toString方法,它会自动用逗号隔开转换成字符串,其实toString内部也是调用join方法

      检测数组方法又两种:

      • l 在es5中新增了 Array.isArray()方法来检测是否是数组
      • l 另一种是 value instanceof Array ,这种方法不适合在页面套用模板,因为这个是检测构造函数,套用两个模板会有两个构造函数所以会有问题,
    2. Push是把参数添加到数组末尾,pop方法则是从数组末尾移除
    3. Shift方法是移除数组第一项,unshift是把参数添加到数组第一项
    4. 数组排序有两个方法reversesort :

             reverse方法会对反转数组项排序

             sort方法会调用每个数组项的toString转型方法,然后比较得到的字符串以确定如何排序

    function compare(value1,value2){
    
    If(value1<value2){
    
     return -1;
    
    }else if(value1>value2){
    
    return 1;
    
    }else{
    
      Return 0;
    
    }
    
    }

          5.concat()方法可以基于当前数组中的所有项创建一个新的数组

    具体说,这个方法会先创建当前数组一个副本,然后将接受到的参数添加到一个副本的末尾,最后返回新构建的数组,在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回副本。

          6.slice 数组的截取,方法返回从该参数指定位置到结束位置之间的项不包括结束位置

          7.splice方法:

    • 删除:可以删除任意输了的项,两个参数:要删除的第一项的位置和要删除的项数
    • 插入:可以向指定位置插入任意数量的项,3个参数:起始位置,要删除的项数,要插入的项
    • l 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项

           8.获取数组位置方法:

    两个方法:indexOf()和lastIndexOf()这两个方法接收两个参数:要查找的项和表示查找起点位置的索引

    indexOf是从头开始查找,lastIndexOf是后面开始查找

           9.迭代方法

    • l every:对数组中的每一项运行给定函数,如果改函数对每一项返回true,则返回true
    • l Filter:对数组中的每一项运行给定函数,返回改函数会返回true的项组成的数组
    • l forEach:对数组中的每一项运行给定函数,这个方法没有返回值、
    • l map:对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
    • l some:对数组中的每一项运行给定函数,如果该函数对任一项返回的true,则返回true

            10.缩小方法

    Es5还新增了两个缩小方法:reduce()和reduceRight()这两个方法接收两个参数:一个在每一项商调用的函数和作为缩小基础的初始值;

    就是迭代数组的每一项将处理后返回。

    var value=[1,2,3,4,5]
    
    Var sum=value.reduceRight(function(prev,cur,index,array){
    
    return prev*cur;
    
    })
    
    alert(sum)//12
    • l RegExp类型(正者表达验证)
    1. g:表示全局模式
    2. i:表示不区分大小写
    3. m:表示多行模式

    例如:

    var re=null,i;
    
    for(i=0;i<10;i++){
    
    re=/cat/g;
    
    re.test(“catastrophe”);
    
    }
    
    for(i=0;i<10;i++){
    
    re=new RegExp(“cat”,”g”);
    
    re.test(“catastrophe”);
    
    }

    第一个循环第一次调用test找到了cat,但第二次调用是从索引为3的字符开始,所以就找不到它了,由于会测试到字符串末尾,所以下次调用test就又从头开始

    第二个循环使用RegExp构造函数在每次循环中创建正则表达式,因为每次迭代都会创建一个新的RegExp实例,所以每次调用test都会返回true

    • l RegExp 实例属性
    1. global:布尔值,表示是否设置了g标志;
    2. ignorecase:布尔值,表示是否设置了i标志;
    3. lastIndex:整数,表示开始搜索下一个匹配的字符串位置,从0开始
    4. multiline:布尔值,表示是否设置了m标志
    5. source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
    • l RegExp实例方法

    RegExp对象的主要方法是exec,该方法是专门为捕获组而设计的,exec接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null,返回数组虽然是Array的实例,单包含两个额外的属性:indexinput,其中,index表示匹配的项在字符串中的位置,而input表示应用正则表达式的字符串,,在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串例如:

    var text=”mom and dad and baby”;
    
    var pattern=/mom(and dad( and baby)?)?/gi;
    
    var matches=pattern.exec(text);
    
    alert(matches.index);//0
    
    alert(matches.input)://mom and dad and baby
    
    alert(matches[0]); //mom and dad and baby
    
    alert(matches[1]);//” and dad and baby”
    
    alert(matches[2])//” and baby” 

    对于exec方法而言,即使在模式中设置了全局标志g,它每次也只会返回一个匹配项,在不设置全局标志的情况下,在同一个字符串商多次调用exec()将始终返回第一个匹配项信息,而在设置全局标志的情况下,每次调用exec则都会在字符串中继续查找新匹配项例如:

    var text=”cat,bat,sat,fat”;
    
    var pattern1=/.at/;
    
    var matches=patter1.exec(text);
    
    alert(matches.index);//0
    
    alert(matches[0]);//cat
    
    alert(pattern1.lastIndex);//0
    
    matches=pattern1.exec(text);
    
    alert(matches.index);//0
    
    alert(matches[0]);//cat
    
    alert(pattern1.lastIndex);//0
    
    var pattern2=/.at/g;
    
    var matches=pattern2.exec(text);
    
    alert(matches.index);//0
    
    alert(matches[0]);//cat
    
    alert(pattern2.lastIndex);//0
    
    matches=pattern2.exec(text);
    
    alert(matches.index);//5
    
    alert(matches[0])://bat
    
    alert(pattern2.lastIndex);//8
    • l RegExp构造函数属性

    RegExp构造函数包含一些属性,这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近移除正则表达式操作而变化。

    1. input属性返回了原始字符串,
    2. leftcontext 属性返回了单词short之前的字符串,而rightcontext属性则返回了short之后的字符串
    3. lastMatch属性返回最近一次与整个正则表达式匹配的字符串,即short
    4. lastParen属性返回最近一次匹配的捕获组
  • 相关阅读:
    [Angular] @ContentChild and ngAfterContentInit
    [Angular] Content Projection with ng-content
    [ES2016] Check if an array contains an item using Array.prototype.includes
    [Ramda] Handle Errors in Ramda Pipelines with tryCatch
    [React Native] Installing and Linking Modules with Native Code in React Native
    [Ramda] Refactor to Point Free Functions with Ramda using compose and converge
    [React Native] Writing Platform-Specific Components for iOS and Android in React Native
    [Redux] Avoid action type naming conflicts
    paip.索引优化---sql distict—order by 法
    DL,DT,DD,比传统table更语义,解析更快的table列表方式
  • 原文地址:https://www.cnblogs.com/hetaojs/p/6000255.html
Copyright © 2011-2022 走看看