量词
量词也称重复。掌握 {m,n}
的准确含义后,只需要记住一些简写形式。
简写形式
{m,}
INFO
表示至少出现m
次
{m}
INFO
等价于{m,m}
表示出现m
次
?
INFO
等价于{0,1}
表示出现 0 次或 1 次,即出现或不出现
记忆方式: 问号的意思表示 有吗?
+
INFO
等价于{1,}
表示至少出现 1 次
记忆方式: 加号的意思就是追加的意思,至少得先有一个,然后才考虑追加
*
INFO
等价于 {0,}
,表示出现任意次,有可能不出现
记忆方式:看看天上的星星,可能一颗没有,可能零散有几颗,可能数也数不过来。
以上量词对应的可视化形式是:
贪婪匹配与惰性匹配
看如下的例子:
js
var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log(string.match(regex));
// ["123", "1234", "12345", "12345"]
其中正则/\d{2,5}/
表示数字连续出现 2 到 5 次.会匹配 2 位,3 位,4 位,5 位连续数字
但是其是贪婪的,它会尽可能多的匹配.你能给我 6 个,我就要 5 个.你能给我 3 个,我就要 3 个
反正只要在能力范围内,越多越好
我们知道有的时候贪婪不是一件好事,而惰性匹配就是尽可能少的匹配
js
var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log(string.match(regex));
// ["12", "12", "34", "12", "34", "12", "34", "56"]
其中 /\d{2,5}?/ 表示,虽然 2 到 5 次都行,当 2 个就够的时候,就不再往下尝试了。
惰性量词 | 贪婪量词 |
---|---|
{m,n}? | {m,n} |
{m,}? | {m,} |
?? | ?? |
+? | + |
*? | * |
INFO
对惰性匹配的记忆方式是: 量词后面加个问号,问一问你知足了吗?你很贪婪吗?
以上惰性量词对应的可视化形式是: