1 var str = "chapter12222"; 2 3 var p = /chapter[0-9]{1,2}/; 4 console.log(p.test(str)); // true 5 console.log(p.exec(str)); // chapter12 可以看出只要是 chapter 后面两位数字符合 p 的要求 即可,但是要只匹配两位数字 就需要加 限定符 6 7 var p1 = /chapter[1-9][0-9]/; 8 console.log(p1.test(str)); // true 继续 9 10 var p2 = /chapter[1-9][0-9]$/;11 console.log(p2.test(str)); // false 正确12 13 /* ? 14 * 第一层意思: 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}15 * 第二层意思: 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。16 * 非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。17 * 例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。18 */19 var p3 = /chapter[1-9][0-9]??/;20 console.log(p3.test(str));21 console.log(p3.exec(str)); // chapter1