IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    js匹配字符串match()和exec()方法带全局标识g的正确用法

    phpvar发表于 2015-10-22 10:26:17
    love 0
    下面几个例子,主要说明js匹配字符串match()和exec()方法带与不带全局标识g时输出结果的异同,需要注意的是exec() 带全局标识g时正则匹配输出结果最详细,但也略显麻烦。至于实际运用中选用下面哪种方法,取决于实际需求。 1.1 匹配字符match()方法,不带全局标识g: [runcode]var str="at 1 b 2 c"; var patt=/([a-zA-Z])+/; str.match(patt); //返回数组中,第0个元素:str中符合整个正则表达式的首个匹配到的子字符串,其余的元素依次存放的是与正则表达式的子表达式(括号部分)匹配的子字符串 [/runcode] 输出结果:
    ["at", "t"]
    1.2 匹配字符match()方法,带全局标识g: [runcode] var str="at 1 b 2 c"; var patt=/([a-zA-Z])+/; str.match(patt); //只输出str中符合整个正则表达式的所有匹配到的子字符串 [/runcode] 输出结果:
    ["at", "b", "c"]
    2.1 正则exec()方法,不带全局标识g: [runcode] var str="at 1 b 2 c"; var patt=/([a-zA-Z])+/; patt.exec(str); //不带全局标识g时,跟match()方法不带全局标识输出结果一样 [/runcode] 输出结果:
    ["at", "t"]
    2.2 正则exec()方法,带全局标识g: [runcode] var str="at 1 b 2 c"; var patt=/([a-zA-Z])+/g; var resultArr=[]; while((result=patt.exec(str))!=null){ console.log("lastIndex: "+patt.lastIndex); resultArr.push(result); //resultArr.splice(resultArr.length,0,result); } console.log(resultArr); //可以看成执行完“match()方法,不带全局标识g”后,再往后匹配,然后将结果依次拼成一数组输出 [/runcode] 输出结果:
    [["at","t"],["b","b"],["c","c"]]


沪ICP备19023445号-2号
友情链接