Skip to content

量词

量词也称重复。掌握 {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

对惰性匹配的记忆方式是: 量词后面加个问号,问一问你知足了吗?你很贪婪吗?

以上惰性量词对应的可视化形式是: