MST

星途 面试题库

面试题:JavaScript 中正则表达式的捕获组应用

在JavaScript中,给定字符串 'I have 12 apples and 5 oranges',使用正则表达式匹配出其中的数字,并通过捕获组将数字提取出来,用代码实现并解释捕获组是如何工作的。
44.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
const str = 'I have 12 apples and 5 oranges';
const regex = /(\d+)/g;
let match;
while (match = regex.exec(str)) {
    console.log(match[1]);
}

捕获组工作原理解释

  1. 正则表达式 /(\d+)/g
    • \d 是一个元字符,表示匹配任意一个数字字符(0 - 9)。
    • + 是一个量词,表示前面的字符(这里是 \d,即数字字符)出现一次或多次。所以 \d+ 整体表示匹配一个或多个连续的数字字符。
    • () 用于定义捕获组。在这个正则表达式中,(\d+) 就是一个捕获组,它会捕获满足 \d+ 规则的字符串部分。
    • g 是全局匹配标志,表示在整个字符串中查找所有匹配项,而不是找到第一个匹配项就停止。
  2. regex.exec(str)
    • exec 方法在字符串 str 中执行查找匹配项的操作。每次调用 exec 方法时,它会返回一个数组。
    • 数组的第一个元素 match[0] 是整个匹配到的字符串(包括捕获组内的内容)。
    • 数组的第二个元素 match[1] 是第一个捕获组捕获到的内容,也就是我们想要的数字部分。如果正则表达式中有多个捕获组,match[2]match[3] 等依次对应其他捕获组捕获到的内容。
  3. while (match = regex.exec(str))
    • 这个循环会不断执行,直到 regex.exec(str) 找不到新的匹配项(返回 null)。每次循环,match 会被赋值为当前找到的匹配数组,然后我们通过 match[1] 提取出捕获组捕获到的数字并打印出来。