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>
代码01
3. 当RegExp的global属性为true时,返回的数组是不同的。
match()方法返回的数组包含着所有匹配字符串,没有子匹配字符串和额外属性。此时,lastIndex属性无效。
exec()方法返回的数组格式与global为false时一样,只是此时RegExp的lastIndex属性有效,匹配是从lastIndex所指示的字符开始的,并且方法执行后会将lastIndex置为本次匹配
字符串的下一个字符处,所以循环执行exec方法时会依次匹配整个字符串,直到字符串最后返回null,并将lastIndex置0。
时间: 2024-11-06 07:54:25