1.什麼是正則表達式?
在編寫處理字符串的程序或網頁時,經常會有查找符合某些複雜規則的字符串的需要。正則表達式就是用於描述這些規則的工具。換句 話 說,正則表達式就是記錄文本規則的代碼。
常用的元字符
代碼 | 說明 |
---|---|
. | 匹配除換行符以外的任意字符 |
/w | 匹配字母或數字或下劃線或漢字 |
/s | 匹配任意的空白符 |
/d | 匹配數字 |
/b | 匹配單詞的開始或結束 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
比如:/b/w{6}/b 匹配剛好6個字符的單詞
一個網站如果要求你填寫的QQ號必須爲5位到12位數字時,可以使用:^/d{5,12}$
字符轉義
如果你想查找元字符本身的話,比如你查找.,或者*,就出現了問題:你沒辦法指定它們,因爲它們會被解釋成別的意思。這時你就得使用/來取消這些字符的特殊意義。因此,你應該使用/.和/*。當然,要查找/本身,你也得用//.
例如:unibetter/.com匹配unibetter.com,C://Windows匹配C:/Windows
常用的限定符
* | 重複零次或更多次 |
+ | 重複一次或更多次 |
? | 重複零次或一次 |
{n} | 重複n次 |
{n,} | 重複n次或更多次 |
{n,m} | 重複n到m次 |
字符類
要想查找數字,字母或數字,空白是很簡單的,因爲已經有了對應這些字符集合的元字符,但是如果你想匹配沒有預定義元字符的字符集合(比如元音字母a,e,i,o,u),應該怎麼辦?
很簡單,你只需要在方括號裏列出它們就行了,像[aeiou]就匹配任何一個英文元音字母,[.?!]匹配標點符號(.或?或!)。
我們也可以輕鬆地指定一個字符範圍,像[0-9]代表的含意與/d就是完全一致的:一位數字;同理[a-z0-9A-Z_]也完全等同於/w(如果只考慮英文的話)。
下面是一個更復雜的表達式:/(?0/d{2}[) -]?/d{8}。
“(”和“)”也是元字符,後面的分組節裏會提到,所以在這裏需要使用轉義。
這個表達式可以匹配幾種格式的電話號碼,像(010)88886666,或022-22334455,或02912345678等。我們對它進行一些分析吧:首先是一個轉義字符/(,它能出現0次或1次(?),然後是一個0,後面跟着2個數字(/d{2}),然後是)或-或空格中的一個,它出現1次或不出現(?),最後是8個數字(/d{8})。
…………
可以參考如下網站 http://www.jb51.net/tools/zhengze.html