JavaScript RegExp – exec
简介
在 JavaScript 中,RegExp 是一个非常强大且常用的对象,它用来处理正则表达式的匹配问题。在使用正则表达式匹配字符串时,有时我们需要使用 exec() 方法获取相应的匹配结果。在本文中,我们将讨论 JavaScript 中的 exec 方法,并给出相应的实例。
语法
RegExp.prototype.exec(string)
描述
exec 方法执行一个搜索匹配,返回一个数组或 null。当设置全局标志的时候,它还记住上次匹配的位置,这样下一次使用 exec 时将从上次的位置开始匹配,而不是从字符串开头开始。
如果没有匹配到任何内容,则返回 null,并且 lastIndex 重置为 0。
实例
在本节中,我们将给出 exec 方法的使用实例。
实例一:
const regex = /hello/i;
const str = 'Hello world!';
const result = regex.exec(str);
console.log(result);
// 输出 ["Hello", index: 0, input: "Hello world!", groups: undefined]
在上述代码中,我们使用正则表达式 /hello/i 来匹配字符串 ‘Hello world!’,由于我们设置了 i 标志,因此匹配时不区分大小写。最终输出结果 [‘Hello’, index: 0, input: ‘Hello world!’, groups: undefined],其中 index 表示匹配结果在字符串中的位置,input 是原字符串,groups 是捕获组。
实例二:
const regex = /hello/g;
const str = 'hello world! hello world!';
let result;
while ((result = regex.exec(str)) != null) {
console.log(`Found {result[0]} at{result.index}.`);
}
// 输出 Found "hello" at 0.
// 输出 Found "hello" at 13.
在上述代码中,我们使用正则表达式 /hello/g 来匹配字符串 ‘hello world! hello world!’,由于我们设置了全局标志 g,因此匹配时会搜索整个字符串,并输出所有匹配结果及相应的位置。
注意事项
在使用 exec 方法时,需要注意以下几点:
- 由于 lastIndex 属性记忆了上一次搜索结果的位置,因此在使用全局标识 g 时,每次搜索都需要重置 lastIndex 的值。
- exec 方法返回的数组包括匹配到的字符串,以及其他一些有用的属性。其中 index 属性表示匹配结果在字符串中的位置,input 属性表示原字符串,groups 属性包含由捕获组指定的子匹配字符串。
结论
JavaScript 中的 RegExp 对象的 exec 方法是一个非常强大的正则表达式搜索工具,它可以在字符串中搜索对应的匹配结果,并返回对应的数组。在实际编程中,我们常常使用 exec 方法来完成对字符串中所有匹配结果的搜索和统计工作。