当前位置:嗨网首页>书籍在线阅读

11-重复

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

17.10 重复

重复元字符允许指定匹配目标重复出现的次数。回想一下之前匹配单个数字的例子。如果要匹配数字(可能由多个连续的数字组成)呢?可以用一个前面提到的方法来实现:

const match = beer99.match(/[0-9][0-9][0-9]|[0-9][0-9]|[0-9]/);

这里要注意如何在匹配不太特殊的字符串(两位数字)之前,必须先匹配最特殊的字符串(三位数字)。这对一位、两位或三位数字都是可行的,但当需要匹配四位数字时,分支也必须加入对4位数字的匹配。幸运的是,有一种更好的写法:

const match = beer99.match(/[0-9]+/);

注意字符组后面的+:它表示前一个元素应该至少匹配一次。“前一个元素”通常会困扰初学者。重复元字符是一种用来修饰它前面元素的修饰器。它们不会(且不能)单独出现。一共有5种重复修饰符,如表17-2所示。

表17-2  重复修饰符

| 重复修饰符 | 描  述 | 示  例 | | :----- | :----- | :----- | :----- | :----- | | {n} | 精确n次 | /d{5}/ 匹配5位数字(例如zip码)。 | | {n, } | 至少n次 | /\d{5,}/ 匹配5位或5位以上的数字。 | | {n, m} | 最少n次,最多m次 | /\d{2,5}/匹配2到5位数字。 | | ? | 0或1次,等价于{0, 1} | /[a-z]\d?/i匹配跟随了0个或一个数字的字符。 | | | 0次或多次(有时称为“Klene星号”或“Klene闭包”) | /[a-z]\d/i 匹配跟随了0个或多个数字的字母。 | | + | 1次或多次 | /[a-z]\d+/i 匹配至少跟随一个数字的字母 |