JavaScript Guidebook

JavaScript 完全知识体系

RegExp.prototype.exec()

RegExp.prototype.exec() 方法专门为捕获组而设计,该方法在一个指定字符串中执行一个搜索匹配。然后返回包含匹配项信息的数组,在没有匹配项的情况下返回 null

语法  

RegExp.prototype.exec(str);

参数

参数描述类型
regExpObject匹配的正则表达式。regexp
str指定的字符串。将在该字符串中执行搜索。string

返回值

  • 如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的属性。返回的数组将完全匹配成功的文本作为第一项,将正则括号里匹配成功的作为数组填充到后面。
  • 如果匹配失败,exec() 方法返回 null

返回的数组包含两个额外的属性。

属性描述
index表示匹配项在字符串的位置
input表示应用正则表达式的字符串

exec() 方法的返回值为 Array 类型,如果找到了对应的匹配,则返回数组的成员如下:

  • 索引 0:存放第一个匹配的子字符串
  • 属性 index:匹配文本在字符串中的起始索引位置
  • 属性 input:整个字符串对象(stringObject

在 IE 6 ~ IE 8 中,该数组还具有额外的 lastIndex 属性,用于存储字符串中匹配文本最后一个字符的下一个位置。

示例

// Match "quick brown" followed by "jumps", ignoring characters in between
// Remember "brown" and "jumps"
// Ignore case
let result = regexp.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
let regexp = /quick\s(brown).+?(jumps)/gi;

下表列出这个脚本的返回值:

对象 Result

属性/索引描述例子
[0]匹配的全部字符串'Quick Brown Fox Jumps'
[1],...,[n]括号中的分组捕获[1] = Brown [2] = Jumps
index匹配到的字符位于原始字符串的基于 0 的索引值4
input原始字符串'The Quick Brown Fox Jumps Over The Lazy Dog'

对象 RegExp

属性/索引描述例子
lastIndex下一次匹配开始的位置25
ignoreCase是否使用了'i'标记使正则匹配忽略大小写true
global是否使用了'g'标记来进行全局的匹配true
multiline是否使用了'm'标记使正则工作在多行模式(也就是,^ 和 $ 可以匹配字符串中每一行的开始和结束(行是由 \n 或 \r 分割的),而不只是整个输入字符串的最开始和最末尾处。)false
source正则匹配的字符串quick\s(brown).+?(jumps)