📌  相关文章
📜  正则表达式仅匹配第一个结果 (1)

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

正则表达式仅匹配第一个结果

正则表达式是一种用于匹配字符串模式的工具,它可以特定的字符组合来描述一些规则表示一段文本句子。在大多数情况下,我们只需要找到第一个匹配或者全部匹配。然而,有时候我们只需要匹配第一个结果。下面是一些示例用法和技巧。

匹配第一个结果的常用方法:

1.使用match()

let str = "hello world";
let reg = /\w+/;
let res = str.match(reg);
console.log(res[0]);

运行结果:hello

2. 使用exec()

let str = "I am a student";
let reg = /[a-z]+/;
let res = reg.exec(str);
console.log(res[0]);

运行结果:am

3. 使用test()

let str = "hello world";
let reg = /\w+/;
if (reg.test(str)) {
  console.log(RegExp.$_);
}

运行结果:hello

4. 使用$()方法

let str = "I am a student";
let reg = /[a-z]+/;
str.match(reg);
console.log(RegExp.$_);

运行结果:am

匹配到第一个结果后停止匹配:
let str = "12 34 56 78";
let reg = /\d+/;

console.log(str.match(reg)[0]);

reg.lastIndex = 0;
console.log(reg.exec(str)[0]);

以上代码使用了match()和exec()两种方法来匹配第一个结果,同时通过将lastIndex属性重置为0来停止匹配。

使用非贪婪量词

有时候我们会遇到一些字符串中嵌套的模式,例如HTML标签。在这种情况下,我们可以使用非贪婪量词来匹配最近的结果。例如,下面的代码匹配了第一个HTML标签:

let str = "<div>hello world</div><span>hello world</span>";
let reg = /<.*?>/;
let res = str.match(reg);
console.log(res[0]);

运行结果:"

"

解释

我们使用了贪婪量词来匹配HTML标签,这会导致匹配到不止一个HTML标签,而是一整个字符串。因此,我们使用了非贪婪量词“?”来匹配最短的结果。

总结

本文介绍了不同的正则表达式方法和技巧用于只匹配第一个结果。学习和理解这些方法可以让你在使用正则表达式时更加灵活,优雅和高效。