[TOC=3,3]
* * * * *
### 1. 測試工具
我們將使用`RegxTestor`這款工具來調試正則表達式
* * * * *
### 2. 元字符
元字符用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。
常用元字符如下:
| 元字符 | 描述 |
| -- | -- |
| . | 匹配除換行符以外的任意字符 |
| \w | 匹配字母或數字或下劃線或漢字 |
| \s | 匹配任意空白字符 |
| \d | 匹配數字 |
| \b | 表示單詞的開始或結束|
| ^ | 匹配字符串的開始 |
| $ | 匹配字符串的結束 |
| - | 表示范圍 |
| [] | 匹配括號中的任意一個字符 |
| *,+,? | 量詞 |
| {} | 量詞,如`\d{5,11}`,表示5-11個數字|
* * * * *
### 3. 字符組
·[]`匹配單個字符,盡管看起來有好多字符
`[aeiou]` 匹配其中一個英文字母
`[.?!]` 匹配其中一個標點符號
`c[aou]t` 匹配“cat”,“cot”,“cut”這三個單詞
**注意:字符組中的元字符是不需要轉義的**
* * * * *
### 4. 轉義
php中使用反斜杠(\)表示轉義,\Q和\E也可以在模式中忽略正則表達式中的元字符:
`\d+\Q.$.\E$`
以上表達式先匹配一個或多個數字,緊接著一個點號,然后一個$,再然后一個點號,最后是字符串末尾。
也就是說,\Q和\E之間的元字符都會作為普通字符用來匹配。
* * * * *
### 5. 分組
重復單個字符只需要在字符后面加上量詞,但如果想重復多個字符又該怎么辦呢?可以用小括號指定子表達式,然后規定這個子表達式的重復次數,也可以對子表達式進行其他一些操作。
簡單匹配IP地址的表達式如下:
>`(\d{1,3}\.){3}\d{1,3}`
>要理解以上表達式,應按下列順序分析:
1)匹配1-3位數字;
`\d{1,3}`
2) 匹配3位數字加上1個英文句號(分組),重復3次(最后加上一個1~3位的數字):
`(\d{1,3}\.){3}\d{3}`
事實上,IP地址的每個數字都不能大于255,所以嚴格來說這個正則表達式是有問題的。
`^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$`
這個正則表達式應該就是匹配IP地址的最終版本。