• javascript高级程序设计第五章总结5.2


    1、RegExp类型,g表示全局,i表示不区分大小写,m表示继续查找下一行,用字面量方法来定义正则表达式

    //匹配字符串中所有的"at"实例
    var pattern1=/at/g;
    
    //匹配第一个"bat" 或"cat"不区分大小写
    var pattern2=/[bc]at/i;
    
    //匹配以at结尾的三个字符的组合,不区分大小写
    var pattern3=/.at/i;
    
    //匹配第一个“[bc]at”不区分大小写
    var pattern4=/[bc]at/i;
    
    //匹配第一个".at",不区分大小写
    var pattern5=/.at/i;

    2、用RegExp构造函数来创建正则表达式,它接收2个函数,一个是要匹配的字符串模式,一个是可选的标志字符串

    //字面量方法定义
    var pattern1=/[bc]at/i;
    
    //RegExp构造函数创建正则表达式
    var patter2=new RegExp("[bc]at","i");
    
    //两者之间是等价的,用字面量定义的任何表达式,都可以用构造函数来定义

    3、正则表达式字面量始终会共享同一个RegExp实例,而构造函数创建的每一个新RegExp实例都是一个新实例。

    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");
    }
    //第一个循环因为第二次循环是从第三个字符开始的,所以就找不到了。第二个循环会一直返回true

    4、RegExp的exec()方法,包含2个额外的属性index(表示匹配项字符串的位置)和input(表示应用正则表达式的字符串),设置全局标志的情况下,每次调用exec()会在字符串中继续查找新匹配项,如果不设置的话始终返回第一个匹配项的信息

    var text="cat,bat,sat,fat";
    var pattern1=.at;       //不设置全局
    var matches=pattern1.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 text="cat,bat,sat,fat";
    var pattern2=.atg;       //设置全局
    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

    5、RegExp的test()方法,接受一个字符串参数。在模式与该参数匹配的情况下返回true,否则返回false.

    var text="000-00-0000";
    var pattern=/d{3}-d{2}-d{4}/;
    
    if(pattern.test(text))
    {
      alert("The pattern was matched");
    }
  • 相关阅读:
    QuantLib 金融计算——案例之固息债的关键利率久期(KRD)
    Elasticsearch 最佳运维实践
    Ansible常用的Ansible Module
    中国七夕节( Chinese Valentine's Day)IT的浪漫情结
    Leetcode之C++刷题生死战
    无需Root可自动定时发送微信和短信的黑科技APP,支持跳过开屏启动广告
    tmp
    【整理中】可靠性基础_抽样检测
    【汇总】命名及标识
    Treelist父节点上下移
  • 原文地址:https://www.cnblogs.com/yuyu9988/p/3354648.html
Copyright © 2020-2023  润新知