Js正则表达式exec用法以及与match方法的区别

1 match

match为字符串的匹配方法
match全局匹配时其输出元素中将包含所有的匹配项

2 exec

exec为正则的方法
exec中不管是不是全局的匹配,只要没有子表达式,其返回的都只有一个元素,如果是全局匹配,可以利用lastIndex进行下一个匹配,匹配成功后lastIndex的值将会变为上次匹配的字符的最后一个位置的索引。在设置g属性后,虽然匹配结果不受g的影响,返回结果仍然是一个数组(第一个值是第一个匹配到的字符串,以后的为分组匹配内容),但是会改变index和 lastIndex等的值,将该对象的匹配的开始位置设置到紧接这匹配子串的字符位置,当第二次调用exec时,将从lastIndex所指示的字符位置 开始检索。同样match方法在设置了g属性后,也会改变index和lastIndex的值,但是是一次性的。无法像exec那样能逐过程累积,因此无 法累积获取下一次检索的位置。

废话不多说看招
 var str = '
你好
'; //声明了一段html字符串 var reg = /<([a-z]+)/g; //我想要其中的以<开始后面跟最少一个字母 的字符串 /*match一下把所有符合结果的标签都给找出来了*/ console.log(str.match(reg)); //match打印结果----------------["你好
"] reg.lastIndex;//设置下一次开始下标 已经匹配过的将不会再匹配, //比如上一次匹配到字符串第5到第7个字符找到了匹配项,那么下次将从第7个字符之后匹配下一个 console.log(reg.exec(str)); //exec再次打印结果------["你好
"] //细心的同学可以发现这一次的index下标变了,利用这一特性我们可以写一个while循环来找到所有的匹配项 循环条件为 当 (tag = reg.exec(html))!=null的时候;

你可能感兴趣的:(Js正则表达式exec用法以及与match方法的区别)