[TOC]
>[success] # 正则表达式
在之前工作中用到 **正则表达式** ,我们都是通过 **百度去搜索** ,但是工作中还是有一些与 **业务逻辑相关的判断** 在百度上搜不到,这种情况就需要我们自己去写,所以接下来我们要学习一下 **正则表达式** ,具体我们会分为 **3** 个步骤来学习,如下图:
![](https://img.kancloud.cn/4f/d0/4fd0048d6c57423714ed28f4868c9f52_928x554.png)
我们要从基础学起,下面推荐几个 **网站** :
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\_\]‘。 |