• 正则表达式有无g参数时,test()结果的差异


    有g参数的正则表达式:

    var kk=/\w\w/g;

    var kk=new RegExp("\\w\\w","g");

    如果正则表达式有指定g参数全局匹配 , 则每次test()是依次获得下一个匹配。举例说明

    var s="AABBCC";

    var kk=/(\w\w)/g;

    for(i=0;i<8;i++){

    document.write ("<br>"+kk.test(s));

    }

    上面的代码结果是3个true,1个false,再3个true,再1个false。

    true

    true

    true

    false

    第1次test匹配AA,第2次test匹配BB,第3次test匹配CC,第4次test找不到匹配,之后又从头重新开始:

    第5次同第1次,第6次同第2次,┄┄。

    所以会出现test有时候true,有时候false的情况。这里的正则表达式必须是指定了g参数的。

    利用这一特点,可以用while循环遍历所有正则匹配:

    var s="AA_123_BB_456_CC";

    var kk=/((\w)\2)/g;

    while(kk.test(s)){

    document.write ("<br>"+RegExp.$1);

    }

    得到结果:

    AA

    BB

    CC

    如果正则表达式没有g参数,则每次test都是从头开始匹配,不存在上述问题。

    没有g参数的正则表达式:

    var kk=/\w\w/;

    var kk=new RegExp(\\w\\w);测试:

    var s="AABBCC";

    var kk=/(\w\w)/;

    for(i=0;i<8;i++){

    document.write ("<br>"+kk.test(s));

    }

    上面的代码结果是8个true,每次都是AA匹配。

    true

    true

    true

    true

    本文转自:无心的专栏

  • 相关阅读:
    集合、序列、字典
    测验2: Python基础语法(上) (第4周)
    geckodriver问题
    转:Loadrunner添加服务器监控
    转:JMeter监控内存及CPU ——plugin插件监控被测系统资源方法
    星号三角形
    天天向上的力量 III
    平方值格式化
    同符号数学运算
    JMeter 连接MySQL
  • 原文地址:https://www.cnblogs.com/Lewis/p/2085344.html
Copyright © 2020-2023  润新知