码迷,mamicode.com
首页 > 其他好文 > 详细

string.match(RegExp) 与 RegExp.exec(string) 深入详解

时间:2014-11-27 20:13:46      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   os   sp   java   on   

string.match(RegExp) 与 RegExp.exec(string) 相同点与不同点对比解析:

1. 这两个方法,如果匹配成功,返回一个数组,匹配失败,返回null。

2. 当RegExp的global属性为false时,这两个方法的返回数组是一样的。

数组的第0个元素是整个pattern的第一个匹配字符串,接下来的元素是pattern第一个匹配中的子匹配字符串。

  此外,数组还有index和input两个额外属性,index是匹配字符串的起始位置,input是整个输入字符串。

  此时,RegExp的lastIndex属性一直是0。

实例01(不带全局变量g):

bubuko.com,布布扣
 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。

string.match(RegExp) 与 RegExp.exec(string) 深入详解

标签:style   blog   http   ar   color   os   sp   java   on   

原文地址:http://www.cnblogs.com/baby-zhude/p/4126600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!