首页 > 代码库 > string.match(RegExp) 与 RegExp.exec(string) 深入详解
string.match(RegExp) 与 RegExp.exec(string) 深入详解
string.match(RegExp) 与 RegExp.exec(string) 相同点与不同点对比解析:
1. 这两个方法,如果匹配成功,返回一个数组,匹配失败,返回null。
2. 当RegExp的global属性为false时,这两个方法的返回数组是一样的。
数组的第0个元素是整个pattern的第一个匹配字符串,接下来的元素是pattern第一个匹配中的子匹配字符串。
此外,数组还有index和input两个额外属性,index是匹配字符串的起始位置,input是整个输入字符串。
此时,RegExp的lastIndex属性一直是0。
实例01(不带全局变量g):
1 <script type="text/JavaScript"> 2 3 var str="this is a string"; 4 5 var reg=/\b\w*(i)s\b/; 6 7 var rm=str.match(reg); 8 9 var re=reg.exec(str);10 11 document.write("string.match(RegExp)测试结果:<br\>");12 13 document.write("string.match(RegExp)返回数组:"+rm+"<br\>");14 15 document.write("string.match(RegExp).index:"+rm.index+"<br\>");16 17 document.write("string.match(RegExp).input:"+rm.input+"<br\>");18 19 document.write("===============================<br\>");20 21 document.write("RegExp.exec(string)测试结果:<br\>");22 23 document.write("RegExp.exec(string)返回数组:"+re+"<br\>");24 25 document.write("RegExp.exec(string).index:"+re.index+"<br\>");26 27 document.write("RegExp.exec(string).input:"+re.input+"<br\>");28 </script>
3. 当RegExp的global属性为true时,返回的数组是不同的。
match()方法返回的数组包含着所有匹配字符串,没有子匹配字符串和额外属性。此时,lastIndex属性无效。
exec()方法返回的数组格式与global为false时一样,只是此时RegExp的lastIndex属性有效,匹配是从lastIndex所指示的字符开始的,并且方法执行后会将lastIndex置为本次匹配
字符串的下一个字符处,所以循环执行exec方法时会依次匹配整个字符串,直到字符串最后返回null,并将lastIndex置0。
string.match(RegExp) 与 RegExp.exec(string) 深入详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。