正則表達式的構成:特殊字符(元字符,例如*、$、^等等)和普通字符(這包括所有大寫和小寫字母、所有數字、所有標點符號和一些其他符號。)普通字符不用多說,下面來看元字符。
常用的元字符如下:
- () 表示一個子表達式開始和結束的位置。
- * 表示前面的子表達式出現0次或者1次或者多次,例如 ro*t,可以匹配rot、root、roat、roost等等。
- ?表示前面的子表達式出現0次或者1次,例如ro(s)?t,可以匹配rot、rost、roter等等。ro(s)t 相當於是 /rot/ 和 /rost/,即包含rot或者rost的字符串都能匹配。
- + 表示前面的子表達式出現1次或者多次,例如abc+,可以匹配abc123、abcabc123
- . 表示除了'\n'之外的字符
- | 表示兩項之間一個選擇,
- ^ 表示字符串開頭,例如/^abc/,可以匹配abc、abc123等等
- $ 表示字符串結束,例如/def$/,可以匹配123def、abc456def等等
- [] 表示一個選擇的范圍
- { 表示限定限定符表達式的開始
首先限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種。前面三個就不贅述了,主要看后三個
- {n} 表示前面的子表達式出現n次
- {n,} 表示前面的子表達式至少出現n次
- {n,m} 表示前面的子表達式至少出現n次,至多出現m次。請注意在逗號和兩個數之間不能有空格。
限定符的使用例子如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>菜鳥教程(runoob.com)</title> 6 </head> 7 <body> 8 9 <script> 10 var str1 = "Chapter 1"; 11 var str2 = "Chapter 15"; 12 var str3 = "Chapter "; 13 var reg = /Chapter [1-9][0-9]*/; 14 document.write(str1.match(reg)+"<br/>"); 15 document.write(str2.match(reg)+"<br/>"); 16 document.write(str3.match(reg)+"<br/>"); 17 </script> 18 19 </body> 20 </html>
結果解釋:/Chapter [1-9][0-9]*/ 等價於/Chapter [1-9]/ 、 /Chapter [1-9][0-9]/ 、/Chapter [1-9][0-9][0-9]/等待
以上代碼運行結果如下: