📜  js exec find all - Javascript (1)

📅  最后修改于: 2023-12-03 15:16:58.559000             🧑  作者: Mango

JavaScript 中的 exec 函数和正则表达式的查找

在 JavaScript 中,我们可以用 exec() 函数来在一个字符串中查找匹配某个正则表达式的子串。这个函数返回一个数组,其中第一个元素是匹配的字符串,剩下的元素就是匹配到的子字符串。

语法

RegExp.prototype.exec(str)

其中 RegExp 是一个正则表达式对象,str 是要被查找的字符串。

示例

假设我们有一个字符串变量 str

let str = "Hello, world! Welcome to JavaScript!";

我们想查找其中所有以大写字母开头的单词。我们可以这样写:

let re = /\b[A-Z][a-z]*\b/g;  // 匹配以大写字母开头的单词
let m;

while ((m = re.exec(str)) !== null) {
  console.log(m[0]);  // 打印匹配到的字符串
}

以上代码的输出应该是:

Hello
Welcome
JavaScript
解释

我们首先创建了一个正则表达式对象 re,它用来匹配以大写字母开头的单词。这个正则表达式的解释如下:

  • \b 匹配单词的边界。
  • [A-Z] 匹配一个大写字母。
  • [a-z]* 匹配零个或多个小写字母。
  • \b 再次匹配单词的边界。
  • g 表示全局匹配。

我们之后在一个 while 循环中反复调用 re.exec(str),直到没有匹配到为止。在每次循环中,我们都会取出返回的数组 m 的第一个元素,即匹配到的子串,然后输出它。

注意,我们在 while 循环的判断条件中使用了 !== null,这是因为当 exec() 没有匹配到任何子串时,它会返回 null。而 null 在 JavaScript 中既不是 false,也不是 undefined,因此我们要显式判断是否为 null

参考资料