摘要:在本教程中,您将学习如何使用非贪婪量词来匹配其前导元素的次数尽可能少。
JavaScript 正则表达式非贪婪(或懒惰)量词简介
在正则表达式中,量词允许您将匹配其前导元素的次数指定为特定的数字。
默认情况下,量词使用贪婪模式进行匹配。在贪婪模式下,量词尝试尽可能多地匹配并返回最大的匹配项。当量词使用贪婪模式时,它们被称为贪婪量词。在量词教程中,您学习了如何使用贪婪量词,例如*
、+
和?
。
除了贪婪模式之外,量词还在非贪婪模式或懒惰模式下工作。在懒惰模式下,量词匹配其前导元素的次数尽可能少,并返回最小的匹配项。当量词使用懒惰模式时,它们通常被称为非贪婪量词或懒惰量词。
要将贪婪量词转换为非贪婪量词,请在其中添加一个额外的问号。下表列出了贪婪量词及其相应的懒惰量词
贪婪量词 | 懒惰量词 | 意义 |
---|---|---|
* | *? | 匹配其前导元素零次或多次。 |
+ | +? | 匹配其前导元素一次或多次。 |
? | ?? | 匹配其前导元素零次或一次。 |
{ n } | { n }? | 准确匹配其前导元素 n 次。 |
{ n ,} | { n ,}? | 至少匹配其前导元素 n 次。 |
{ n , m } | { n , m }? | 匹配其前导元素 n 到 m 次。 |
JavaScript 非贪婪量词示例
以下程序使用非贪婪量词(+?
)匹配按钮元素引号(""
)内的文本
const s = '<button type="submit" class="btn">Send</button>'
const pattern = /".+?"/g;
const result = s.match(pattern)
console.log(result);
Code language: JavaScript (javascript)
输出
['"submit"', '"btn"']
Code language: Python (python)
总结
- 懒惰量词匹配其前导元素的次数尽可能少,以返回最小的可能匹配项。
- 使用问号 (?) 将贪婪量词转换为懒惰量词。
本教程对您有帮助吗?