限定符,就是限定某個或某類字符出現的次數。例如,郵政編碼都是6位數,因此對於表單中的郵政編碼,我們在正則表達式中要限定其為6位數字。匹配郵政編碼的正則表達式是“\d{6}”,其中“{6}”就是限定符。
常用的正則表達式限定符如下:
接下來,我們詳細為大家講解這些正則表達式限定符。
在正則表達式中,使用+限定前導字符重復1次或更多次。
舉例:
go+
分析:
由於使用了+限定符,因此字母o必須出現1次或者更多次。所以匹配上面正則表達式的字符串有go、good、god等,但是get、g就不匹配了。
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> var str="good"; //定義正則表達式 var myregex = /go+/; //判斷字符串str是否匹配正則表達式myregex if(myregex.test(str)) { alert("匹配"); } else { alert("不匹配"); } </script> </head> <body> </body> </html>
在浏覽器預覽效果如下:
大家在正則表達式測試工具中驗證的可能會發現,對於good這個字符串:咦?高亮的部分怎麼是goo,而不是good呢?上面JavaScript使用test()方法測試中不是說“good”匹配正則表達式go+嗎?
是這樣的,在正則表達式測試工具中,只是把good這個字符串符合go+的部分高亮出來。也就是說,只要字符串有一部分或者全部匹配正則表達式的話(字符串在正則表達式測試工具能高亮),使用JavaScript的test()方法時返回值都是true,也就是說這個字符串匹配該正則表達式。
在正則表達式中,使用*限定前導字符重復0次或更多次。
舉例:
go*
分析:
由於使用了*限定符,因此字母o必須出現0次或者更多次。所以匹配上面正則表達式的字符串有g、go、good、god等,但是get等就不匹配了。注意一下,在這裡字符串g是匹配的,*限定符跟+限定符不一樣,因為+限定符限定前導字符必須出現1次以上。
對於這些正則表達式的學習,請使用正則表達式測試工具進行驗證,那是最明顯直觀的了。
在正則表達式中,使用?限定前導字符重復0次或1次(最多1次)。
舉例:
go?
分析:
由於使用了?限定符,因此字母o必須出現0次或者1次。所以匹配上面正則表達式的字符串只有g、go這2種,其他的諸如god、good、get等就不匹配了。
我們都知道“顏色”的英文是color或者colour,這個時候我們可以使用?限定符。
colou?r
表達式u?表示字母“u”可以出現1次或者不出現。
請讀者使用自行正則表達式測試工具判斷哪些字符串匹配。
在正則表達式中,使用{n}限定前導字符重復n次。
舉例:
go{3}
分析:
由於使用了?限定符,因此字母o必須出現3次。所以匹配上面正則表達式的字符串只有gooo這1種,其他的諸如god、good、get等就不匹配了。
在正則表達式中,使用{n,}限定前導字符重復n次或更多次。
舉例:
go{3,}
分析:
由於使用了?限定符,因此字母o必須出現3次或更多次。所以匹配上面正則表達式的字符串只有gooo,goooo,gooooo……。
在正則表達式中,使用{n,m}限定前導字符重復n到m次(也就是n~m之間任意一個次數)。
舉例:
go{1,3}
分析:
由於使用了?限定符,因此字母o必須出現1~3次。所以匹配上面正則表達式的字符串只有go、goo、gooo這3種。
總結1、常用的正則表達式限定符如下:
這些限定符都是限定“前導字符”重復的次數。這些限定符很容易記憶,沒記住也沒關系。到時候大家回來查查就OK了。