現(xiàn)在你已經(jīng)知道幾個很有用的元字符了,如\b,.,*,還有 \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 號能匹配這個正則表達式的話,那就符合要求了。
和忽略大小寫的選項類似,有些正則表達式處理工具還有一個處理多行的選項。如果選中了這個選項,^和$的意義就變成了匹配行的開始處和結(jié)束處。
正則表達式引擎通常會提供一個“測試指定的字符串是否匹配一個正則表達式”的方法,如 JavaScript 里的RegExp.test()方法或.NET里的Regex.IsMatch()方法。這里的匹配是指是字符串里有沒有符合表達式規(guī)則的部分。如果不使用^和$的話,對于\d{5,12}而言,使用這樣的方法就只能保證字符串里包含 5 到 12 連續(xù)位數(shù)字,而不是整個字符串就是 5 到 12 位數(shù)字。