📅  最后修改于: 2023-12-03 14:53:09.886000             🧑  作者: Mango
在JavaScript中,我们可以使用正则表达式来匹配字符串。但是有时候我们需要从匹配到的字符串中获取更多信息,例如获取所有匹配到的字符串,这时候就需要使用到正则表达式的一个小技巧:全局匹配。
正则表达式的全局匹配可以让我们通过一次匹配获取到所有匹配到的字符串。在JavaScript中,我们可以通过在正则表达式中添加/g
标志来开启全局匹配模式。
我们可以使用String对象的match()
方法来进行全局匹配。match()
方法会返回所有匹配到的字符串组成的数组。
例如,我们要匹配一个字符串中的所有数字:
const str = 'abc123def456ghi789';
const regex = /\d+/g;
const matches = str.match(regex);
console.log(matches); // ['123', '456', '789']
在上面的例子中,我们使用了一个正则表达式/\d+/g
来匹配字符串中的所有数字。其中\d+
用于匹配一个或多个数字字符,/g
开启全局匹配模式。
有时候,我们需要从匹配到的字符串中获取更多信息,例如从一个包含姓名和年龄的字符串中分别获取姓名和年龄。这时候我们可以使用正则表达式的捕获组。
捕获组可以将匹配到的字符串的某一部分单独提取出来。在正则表达式中,我们使用圆括号来定义一个捕获组。例如,我们要从下面这个字符串中获取姓名和年龄:
const str = 'my name is tom, age 18';
const regex = /name is (.+), age (\d+)/;
const matches = str.match(regex);
console.log(matches); // ['name is tom, age 18', 'tom', '18']
在上面的例子中,我们使用了一个正则表达式/name is (.+), age (\d+)/
来匹配字符串中的姓名和年龄。其中(.+)
和(\d+)
分别用于匹配姓名和年龄,同时将它们分别包含在两个捕获组中。
在match()
方法返回的数组中,第一个元素为匹配到的完整字符串,后面的元素则依次为每个捕获组匹配到的字符串。