正则学习(六)- 贪婪模式和惰性模式

2024-11-01 16:38:02

一. 概述

1. 贪婪模式

尽可能多的匹配字符。

2. 惰性模式

又称非贪婪模式,尽可能少的匹配字符。

量词默认是贪婪的,尽可能多的匹配字符。

如果让量词变成惰性(不贪婪)的,在量词后面添加上 ?

二. 示例

1. 贪婪匹配

const regex = /[a-zA-Z]{2,4}/g;
const string = "ab abc abcd abcde";
console.log(string.match(regex));
// ["ab", "abc", "abcd", "abcd"]

2. 惰性匹配 - {m, n}?

const regex = /[a-zA-Z]{2,4}?/g;
const string = "ab abc abcd abcde";
console.log(string.match(regex));
// ["ab", "ab", "ab", "cd", "ab", "cd"]

3. 惰性匹配 - {m}?

const regex = /[a-zA-Z]{2}?/g;
const string = "ab abc abcd abcde";
console.log(string.match(regex));
// ["ab", "ab", "ab", "cd", "ab", "cd"]

4. 惰性匹配 - *?

const regex = /[a-zA-Z]*?/g;
const string = "ab abc abcd abcde";
console.log(string.match(regex));
// ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] 长度 18

匹配0次,"ab abc abcd abcde"中能匹配的位置有18个。

5. 惰性匹配 - ??

const regex = /[a-zA-Z]??/g;
const string = "ab abc abcd abcde";
console.log(string.match(regex));
// ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] 长度 18

和4例子一样。

6. 惰性匹配 - +?

const regex = /[a-zA-Z]+?/g;
const string = "ab abc abcd abcde";
console.log(string.match(regex));
//  ["a", "b", "a", "b", "c", "a", "b", "c", "d", "a", "b", "c", "d", "e"] 长度 14

目录

相关推荐
正则学习(一)-什么是正则表达式,及如何创建正则表达式正则学习(二)- 常用元字符:量词和字符组正则学习(三)-正则中不得不说的捕获和反向引用正则学习(四)-正则表达式中的位置匹配正则学习(五)-深入理解String.prototype.replace