[TOC]
>[success] # 正則表達式
在之前工作中用到 **正則表達式** ,我們都是通過 **百度去搜索** ,但是工作中還是有一些與 **業務邏輯相關的判斷** 在百度上搜不到,這種情況就需要我們自己去寫,所以接下來我們要學習一下 **正則表達式** ,具體我們會分為 **3** 個步驟來學習,如下圖:

我們要從基礎學起,下面推薦幾個 **網站** :
1. [正則在線測試網站](https://regexr-cn.com/)
2. [正則練習網址](https://www.codejiaonang.com/)
>[success] ## 案例1
~~~
<table>
<tr>
hello world 18111234589
</tr>
<tr>
<span>name:張三,tel:18711001111</span>
</tr>
</table>
~~~
接下來,我們要使用 **正則表達式** 來提取上面代碼的內容,實現以下目標 :
1. **提取字符串 <span\> 中的內容**
2. **提取其中的手機號**
>[success] # 常用正則
**多種匹配模式**
| 實例 | 描述 |
| --- | --- |
| `[Pp]ython` | 匹配 “Python” 或 “python”。 |
| `rub[ye]` | 匹配 “ruby” 或 “rube”。 |
| `[abcdef]` | 匹配中括號內的任意一個字母。 |
| `[0-9]` | 匹配任何數字。類似于 \[0123456789\]。 |
| `[a-z]` | 匹配任何小寫字母。 |
| `[A-Z]` | 匹配任何大寫字母。 |
| `[a-zA-Z0-9]` | 匹配任何字母及數字。 |
| `[^au]` | 除了au字母以外的所有字符。 |
| `[^0-9]` | 匹配除了數字外的字符。 |
| `.` | 匹配除 “\\n” 之外的任何單個字符。要匹配包括 ‘\\n’ 在內的任何字符,請使用象 ‘\[.\\n\]’ 的模式。 |
| `?` | 匹配一個字符零次或一次,另一個作用是非貪婪模式 |
| `+` | 匹配1次或多次 |
| `*` | 匹配0次或多次 |
| `\b` | 匹配一個長度為`0`的子串 |
| `\d` | 匹配一個數字字符。等價于 \[0-9\]。 |
| `\D` | 匹配一個非數字字符。等價于 \[^0-9\]。 |
| `\s` | 匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 \[ \\f\\n\\r\\t\\v\]。 |
| `\S` | 匹配任何非空白字符。等價于 \[^ \\f\\n\\r\\t\\v\]。 |
| `\w` | 匹配包括下劃線的任何單詞字符。等價于’\[A-Za-z0-9\_\]’。 |
| `\W` | 匹配任何非單詞字符。等價于 ‘\[^A-Za-z0-9\_\]‘。 |