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>

代码01

3. 当RegExp的global属性为true时,返回的数组是不同的。

  match()方法返回的数组包含着所有匹配字符串,没有子匹配字符串和额外属性。此时,lastIndex属性无效。

  exec()方法返回的数组格式与global为false时一样,只是此时RegExp的lastIndex属性有效,匹配是从lastIndex所指示的字符开始的,并且方法执行后会将lastIndex置为本次匹配

  字符串的下一个字符处,所以循环执行exec方法时会依次匹配整个字符串,直到字符串最后返回null,并将lastIndex置0。

时间: 2024-11-06 07:54:25

string.match(RegExp) 与 RegExp.exec(string) 深入详解的相关文章

js字符串和正则表达式中的match、replace、exec等函数详解

正则并不是经常使用,而正则和字符串之间的函数关系又错综复杂,谁是谁的函数,又是怎么样的一种结果,往往我们是看一遍忘一遍,对此我是头疼不已,感觉自己是个笨蛋^_^. 为了以后不再查文档,特此把常用的函数和功能,简明扼要的罗列在此,以备日后查看: RegExp对象的函数常用的有2个 1.test函数 用法:RegExpObject.test(string) 返回:如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false. 描述:这个方法没有什么

string和StringBuilder的区别,用法和详解

1.string 1.概念:string是引用类型,我们比较的是对象的值,而不是对象的本身. string strA="abcde"; string strB="abc"; string strC="de"; Console.WriteLine(strA == (strB+strC));//true Console.WriteLine((object)strA == (object)(strB+strC));//false 2.string对象是

java中String类、StringBuilder类和StringBuffer类详解

本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利 正文: 探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得

WScript.Shell对象的 run()和exec()函数使用详解

http://blog.sina.com.cn/s/blog_6e14a2050102v47g.html vbScript 中 WScript.Shell 对象的 run 和 exec 函数功能使用详解 函数声明: Set Ws = CreateObject("Wscript.Shell")    Function Exec(ByVal Command As String) As WshExec    Function Run(ByVal Command As String, [ByV

Python中re.match与re.search的使用方法详解

本文和大家分享的主要是python正则表达式中re.match函数与re.search方法的相关用法及异同点,希望通过本文的分享,能对大家有所帮助. re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. 函数语法: re.match(pattern, string, flags=0) 函数参数说明: 参数描述 pattern匹配的正则表达式 string要匹配的字符串. flags标志位,用于控制正则表达式的匹配

【Linux 进程】exec族函数详解

exec族的组成: 在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是: #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg

python的exec、eval详解

exec exec语句用来执行储存在字符串或文件中的Python语句.例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句.下面是一个简单的例子. exec 'print "Hello World"' 输出:Hello World 也可以实现赋值: a = 1 exec 'a = 2' 输出: 2 也可以在表达式后面通过in指定一个dictionary: dict = { 'a':1, 'b':2, 'c':3, 'd':4 } fun = ''

序列内置方法详解(string/list/tuple)

一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母.然后返回新的字符串 >>> l = 'abc cba' >>> l.capitalize() 'Abc cba' >>> l.capitalize() '2b 3c' str.center() 字符串设置为指定字符宽度,并居中.默认是用空格填充前后空白字符

JavaScript RegExp对象的exec()方法

JavaScript RegExp对象的exec()方法用来匹配字符串,它的行为与match()有些不同. 对于RegExpObject.exec(),w3school上面是这样介绍的: exec() 方法的功能非常强大,它是一个通用的方法,而且使用起来也比 test() 方法以及支持正则表达式的 String 对象的方法更为复杂. 如果 exec() 找到了匹配的文本,则返回一个结果数组.否则,返回 null.此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpO