📅  最后修改于: 2023-12-03 15:16:58.559000             🧑  作者: Mango
在 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
。