正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足想要格式的语句。
一个正则表达式(“Regular expression”,缩写为“regex”或“regexp”)是一种从左到右匹配字符串的模式,可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表达表单、提取字符串等。
例子,假设创建一个用户命名的规则,让用户名包含字符、数组、下划线(
_
)和连字符(-
)并限制字符的个数,可以使用以下正则表达式来验证:
正则表达式其实就是在执行搜索时的格式,它由一些字母和数组组合而成。
正则表达式 | 描述 | 示例 |
---|---|---|
the | 由字母t开始,接着是h,再接着是e | the => The fat cat sat on the mat. |
The | The => The fat cat sat on the mat. |
正则表达式是大小写敏感的。
正则表达式主要依赖于元字符。
[.]
表示英文句号,示例:ar[.]
=> A garage is a good place to park a car.元字符 | 描述 | 示例 |
---|---|---|
. | 匹配任意单个字符(除换行符) | .ar => The car parked in the garage. |
[] | 匹配方括号内的任意字符 | [Tt]he => The car parked in the garage. |
[^] | 匹配方括号以外的任意字符 | [^c]ar => The car parked in the garage. |
* | 匹配>=0个* 之前的字符 | [a-z]* => The car parked in the garage #21. |
+ | 匹配>=1个+ 之前的字符 | c.+t => The fat cat sat on the mat. |
? | ? 之前的字符为可选 | [T]?he => The car is parked in the garage. |
{n,m} | 匹配{} 前固定数量个字符,数量在n与m之间,m不写表示至少n个,m和,都不写表示固定次数 | [0-9]{2,3} => The number was 9.9997 but we rounded it off to 10.0. |
() | 匹配与() 内完全相同的字符串 | `(c |
` | ` | 匹配` |
\ | 转义字符,匹配保留字符[](){}.*+?^$\| | `(f |
^ | 匹配行开头 | `^(T |
$ | 匹配行结尾 | (at\.)$ => The fat cat. sat. on the mat. |
简写 | 描述 |
---|---|
. | 匹配所有字符(除换行符) |
\w | 匹配所有字母和数字,等同[a-zA-Z0-9_] |
\W | 匹配所有非字母数字,等同[^\w] |
\d | 匹配数字,等同[0-9] |
\D | 匹配非数字,等同[^\d] |
\s | 匹配所有空格字符,等同[\t\n\f\r\p{z}] |
\S | 匹配所有非空格,等同[^\s] |
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\p | 匹配CR\LF,等同\r\n ,匹配DOS行终止符 |
先行断言和后发断言都属于非捕获簇,不捕获文本也不针对组合进行计数。
符号 | 含义 | 描述 | 示例 |
---|---|---|---|
?! | 负先行断言---排除 | 用于筛选所有匹配结果,筛选条件为其后不跟随着断言中定义的格式 | `(T |
?<= | 正后发断言---存在 | 筛选所有匹配的结果,筛选条件为其前跟随着断言中定义的格式 | `(?<=(T |
?<! | 负后发断言---排除 | 筛选所有匹配结果,筛选条件为其前不跟随断言中定义的格式 | `"(?<!(T |
标志也叫模式修正符,用来修改表达式的搜索结果,标志可以任意组合使用,是正则表达式的一部分。
标志 | 描述 | 示例 |
---|---|---|
i | 忽略大小写 | /The/gi => The fat cat sat on the mat. |
g | 全局搜索 | /.(at)/g => The fat cat sat on the mat. |
m | 多行修饰符,^ ,$ 工作范围在每行的起始 | /.at(.)?$/gm => The fat <br> cat sat <br> on the mat. |
/(.*at)/
=> The fat cat sat on the mat.?
将贪婪匹配转换为惰性匹配:/(.*?at)/
=> The fat cat sat on the mat.