現(xiàn)在你已經(jīng)知道幾個很有用的元字符了,如\b,.,*
,還有 \d.
正則表達(dá)式里還有更多的元字符,比如\s
匹配任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格等。\w
匹配字母或數(shù)字或下劃線或漢字等。
下面來看看更多的例子:
\ba\w*\b
匹配以字母 a 開頭的單詞——先是某個單詞開始處 (\b),然后是字母 a,然后是任意數(shù)量的字母或數(shù)字(\w*),最后是單詞結(jié)束處(\b)。
\d+
匹配 1 個或更多連續(xù)的數(shù)字。這里的+
是和*
類似的元字符,不同的是*
匹配重復(fù)任意次(可能是 0 次),而+
則匹配重復(fù) 1 次或更多次。
\b\w{6}\b
匹配剛好 6 個字符的單詞。
表1.常用的元字符
代碼 | 說明 |
---|---|
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母或數(shù)字或下劃線或漢字 |
\s | 匹配任意的空白符 |
\d | 匹配數(shù)字 |
\b | 匹配單詞的開始或結(jié)束 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結(jié)束 |
元字符^
(和數(shù)字 6 在同一個鍵位上的符號)和$
都匹配一個位置,這和\b
有點類似。^匹配你要用來查找的字符串的開頭,$
匹配結(jié)尾。這兩個代碼在驗證輸入的內(nèi)容時非常有用,比如一個網(wǎng)站如果要求你填寫的 QQ 號必須為 5 位到 12 位數(shù)字時,可以使用:^\d{5,12}$
。
這里的{5,12}
和前面介紹過的{2}
是類似的,只不過{2}
匹配只能不多不少重復(fù) 2 次,{5,12}
則是重復(fù)的次數(shù)不能少于 5 次,不能多于 12 次,否則都不匹配。
因為使用了^
和$
,所以輸入的整個字符串都要用來和\d{5,12}
來匹配,也就是說整個輸入必須是 5 到 12 個數(shù)字,因此如果輸入的 QQ 號能匹配這個正則表達(dá)式的話,那就符合要求了。
和忽略大小寫的選項類似,有些正則表達(dá)式處理工具還有一個處理多行的選項。如果選中了這個選項,^
和$
的意義就變成了匹配行的開始處和結(jié)束處。
正則表達(dá)式引擎通常會提供一個“測試指定的字符串是否匹配一個正則表達(dá)式”的方法,如 JavaScript 里的RegExp.test()
方法或.NET
里的Regex.IsMatch()
方法。這里的匹配是指是字符串里有沒有符合表達(dá)式規(guī)則的部分。如果不使用^
和$
的話,對于\d{5,12}
而言,使用這樣的方法就只能保證字符串里包含 5 到 12 連續(xù)位數(shù)字,而不是整個字符串就是 5 到 12 位數(shù)字。
更多建議: