RegExp.prototype.exec() - JavaScript RegExp 对象
RegExp.prototype.exec()
exec()
方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或null
。
如果你只是为了判断是否匹配(true或 false),可以使用String.search()
方法。
语法
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!"字符串。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!