正则的限定符 ?

 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

 

posted @ 2013-10-10 11:14  楚玉  阅读(244)  评论(0编辑  收藏  举报