exec()
方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null
。
如果你只是为了判断是否匹配(true或 false),可以使用 String.search()
方法。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
语法
regexObj.exec(str)
参数
-
str
- 要匹配正则表达式的字符串。
返回值
如果匹配成功,exec
() 方法返回一个数组,并更新正则表达式对象的属性。返回的数组将完全匹配成功的文本作为第一项,将正则括号里匹配成功的作为数组填充到后面。
如果匹配失败,exec() 方法返回 null
。
描述
考虑以下示例:
// Match "quick brown" followed by "jumps", ignoring characters in between // Remember "brown" and "jumps" // Ignore case var re = /quick\s(brown).+?(jumps)/ig; var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
下表列出这个脚本的返回值:
对象 | 属性/索引 | 描述 | 例子 |
result |
[0] |
匹配的全部字符串 | Quick Brown Fox Jumps |
[1], ...[n ] |
括号中的分组捕获 | [1] = Brown |
|
index |
匹配到的字符位于原始字符串的基于0的索引值 | 4 |
|
input |
原始字符串 | The Quick Brown Fox Jumps Over The Lazy Dog |
|
re |
lastIndex |
下一次匹配开始的位置 | 25 |
ignoreCase |
是否使用了 "i " 标记使正则匹配忽略大小写 |
true |
|
global |
是否使用了 "g " 标记来进行全局的匹配. |
true |
|
multiline |
是否使用了 " |
false |
|
source |
正则匹配的字符串 | quick\s(brown).+?(jumps) |
示例
查找所有匹配
当正则表达式使用 "g
" 标志时,可以多次执行 exec
方法来查找同一个字符串中的成功匹配。当你这样做时,查找将从正则表达式的 test()
也会更新 lastIndex
属性)。例如,你使用下面的脚本:
var myRe = /ab*/g; var str = 'abbcdefabh'; var myArray; while ((myArray = myRe.exec(str)) !== null) { var msg = 'Found ' + myArray[0] + '. '; msg += 'Next match starts at ' + myRe.lastIndex; console.log(msg); }
脚本运行结果如下:
Found abb. Next match starts at 3 Found ab. Next match starts at 9
注意:不要把正则表达式字面量(或者lastIndex
的属性都被重置,如果匹配,将会造成一个死循环。并且要确保使用了'g'标记来进行全局的匹配,否则同样会造成死循环。
结合 RegExp
字面量使用 exec()
你也可以直接使用 exec()
而不是创建一个 RegExp
对象:
var matches = /(hello \S+)/.exec('This is a hello world!'); console.log(matches[1]);
运行上面的代码,控制台会输出"hello world!" 字符串。
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.2. |
ECMAScript 5.1 (ECMA-262) RegExp.exec |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) RegExp.exec |
Standard | |
ECMAScript Latest Draft (ECMA-262) RegExp.exec |
Draft |
浏览器兼容性
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
exec |
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support Yes | Safari Full support Yes | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support 1.0 | nodejs Full support Yes |
Legend
- Full support
- Full support
相关链接
- Regular Expressions chapter in the JavaScript Guide
RegExp