📅  最后修改于: 2023-12-03 15:01:39.218000             🧑  作者: Mango
exec()
是 JavaScript 中用于匹配正则表达式并返回结果的方法。该方法是 RegExp 对象的一个方法,用于在字符串中搜索匹配的内容。
regexObj.exec(str)
regexObj
:一个正则表达式对象。str
:要搜索的字符串。exec()
方法返回一个数组,其中包含第一个匹配项的信息。如果没有找到匹配项,则返回 null
。
返回的数组包含两个属性:
0
索引:表示匹配到的完整文本。index
索引:表示匹配到的文本在原字符串中的索引位置。在数组上还可以添加任意数量的属性来存储其他信息。
const str = "Hello, world! Welcome to JavaScript!";
const regex = /world/g;
const result = regex.exec(str);
console.log(result); // ['world', index: 7, input: 'Hello, world! Welcome to JavaScript!', groups: undefined]
如果正则表达式设置了 g
标志,exec()
方法将从匹配到的位置继续搜索,并返回下一个匹配项。
const str = "Hello, JavaScript! Hello, world! Hello, everyone!";
const regex = /Hello/g;
let result;
while ((result = regex.exec(str)) !== null) {
console.log(result[0]); // 'Hello', 'Hello', 'Hello'
console.log(result.index); // 0, 14, 27
}
正则表达式中使用了括号 ( )
来表示捕获组,exec()
方法返回的数组将包含每个捕获组的匹配项。
const str = "John Doe, jane.doe@example.com";
const regex = /([A-Za-z]+) ([A-Za-z]+), ([A-Za-z.]+@[A-Za-z]+\.[A-Za-z]+)/;
const result = regex.exec(str);
console.log(result);
// ['John Doe, jane.doe@example.com', 'John', 'Doe', 'jane.doe@example.com']
console.log(result[1]); // 'John'
console.log(result[2]); // 'Doe'
console.log(result[3]); // 'jane.doe@example.com'
exec()
方法是正则表达式的状态方法,将会改变正则表达式对象的 lastIndex
属性,所以在多次调用 exec()
方法时要小心使用。g
标志,则 exec()
方法每次调用都将从字符串的开头搜索匹配项。exec()
方法都会更新正则表达式的 lastIndex
属性,以便下一次搜索能够继续从正确的位置开始。exec()
方法是 JavaScript 中用于匹配正则表达式的方法之一。它可用于搜索字符串中的匹配项,并返回相关信息的数组。在多次调用时,exec()
方法可以一次获取所有匹配项,并且可以使用捕获组进一步处理匹配的内容。但需要注意,exec()
方法会改变正则表达式对象的状态,因此在使用时要留意相关的注意事项。