正则--match和exec方法

来源:互联网 发布:微信公众号淘宝客 编辑:程序博客网 时间:2024/06/06 07:19

一、字符串方法–match的用法

1、stringObject.match(str):

用于检索字符串中指定的值,返回一个存放匹配结果的数组,若没有检索到,返回null

    var str = "hello world!";    str.match('llo');//['llo']    str.match("ksk");//"null"

2、stringObject.match(regexp):

将检索字符串 stringObject,以找到一个或多个与 regexp 匹配的文本,若没有匹配到,则返回null。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。

(1)如果没有全局匹配标志,则返回如下:

1、索引:匹配到的第一个字符串
2、index属性:匹配到的字符串的位置
3、input属性:原字符串对象

    var str = "Code123Player34Code456 http://www.365mini.com";    str.match(/\d{2}/);

这里写图片描述

(2)如果带有全局匹配的标志g,则返回如下:
  • 包含全部索引值的数组,该数组不再包含index和input属性
 var str = "Code123Player34Code456 http://www.365mini.com";str.match(/\d{2}/g);

这里写图片描述

二、正则的方法regExp.exec(str)的用法

1、若没有匹配到,则返回null

2、如果 exec() 找到了匹配的文本,则返回一个结果数组。

  • 此数组的第 0 个元素是与整个正则表达式相匹配的文本
  • 第 1 个元素是与 RegExpObject 的第 1 个子表达式(也就是圆括号里的正则表达式)匹配的文本
  • 第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本,以此类推。
  • 除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string
  • 而且在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。

这里写图片描述

3、如果是设置了全局属性的RegExp对象调用exec()方法

  • 如果正则对象带有g全局属性,则可以多次调用exec方法,下一次检索的位置是从上一次匹配成功(也就是正则对象的lastIndex属性值所指示)的位置的下一个位置开始。
  • 当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。

这里写图片描述

0 0