JS正则方法match和exec的异同

作者:admin   时间:2022-08-30   访问量:2

  match是字符串方法,写法为:str.match(reg)

  exec是正则表达式方法,写法为:reg.exec(str)

  match和exec在匹配成功时返回的都是数组,在没有匹配上时返回的都是null。

  match和exec进行区分

  1、当不使用全局匹配时,两者的匹配效果是一样的,仅返回第一次匹配成功的结果.(包括分组内容,匹配第一次)如

  str = "abbb34eftab0modabbbbb6";

  var reg = /a(b)+(\d+)/i;

  var arr = str.match(reg);

  console.log(arr);

  //["abbb34", "b", "34", index: 0, input: "abbb34eftab0modabbbbb6"]

  2、使用全局匹配/g时,exec的执行结果不受影响。但是match会返回全局匹配的结果,将不在有分组匹配信息和索引等值。如:

  var s = "aaa1 bbb2 ccc3";

  var reg = /\b(\w+)(\d{1})\b/g;

  var rs_match1 = s.match(reg);

  var rs_exec1 = reg.exec(s);

  console.log("match1:",rs_match1);//["aaa1", "bbb2", "ccc3"];

  console.log("exec1:",rs_exec1);// ["aaa1", "aaa", "1", index: 0, input: "aaa1 bbb2 ccc3"];

  exec的强大特性

  当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。


【地址】:http://www.inseo.cn/seo/179.html转载请注明出处


相关文章

Copyright © 2018-2030 大树SEO All Rights Reserved.