正则表达式实例搜集,通过实例来学习正则表达式。本仓库实例搜集整理来自于《一些正则表达式随记》,通过一个单独仓库专门整理这些正则实例,提供一个实例网站,方便正则实例验证和查询。也方便添加新的正则实例大家共同维护。
Github: @jaywcjlove/regexp-example
如果有一些基础知识,通过实例理解,将会更快速入门,写出自己的正则。如果对基础还不是很了解,你可以通过《Learn regex the easy way》去学习基础知识,这个仓库教程被翻译成十几种语言了,包含了中文翻译,它通过极其简单的实例,帮助你理解正则基础语法规则。
表达式全集
元字符
正则表达式主要依赖于元字符。
元字符不代表他们本身的字面意思,他们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思。以下是一些元字符的介绍:
| 字符 | 描述 |
|---|---|
| . | 句号匹配任意单个字符除了换行符。要匹配包括 \n 在内的任何字符,请使用像 (.|\n) 的模式。 |
| [ ] | 字符种类。匹配方括号内的任意字符。 |
| [^ ] | 否定的字符种类。匹配除了方括号里的任意字符 |
| * | 匹配 >=0 个重复的在 * 号之前的字符。例如,zo* 能匹配 z 以及 zoo 。* 等价于 {0,}。 |
| + | 匹配 >=1 个重复的 + 号前的字符。例如, zo+ 能匹配 zo 以及 zoo ,但不能匹配 z 。+ 等价于 {1,}。 |
| ? | 标记 ? 之前的字符为可选。例如,do(es)? 可以匹配 does 或 does 中的 do。? 等价于 {0,1}。 |
| | | 或运算符,匹配符号前或后的字符。例如,`z |
| \ | 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ |
|
| ^ | 从开始行开始匹配。 |
| $ | 从末端开始匹配。 |
| {n} |
n 是一个非负整数。匹配确定的n次。例如, o{2} 不能匹配 Bob 中的 o ,但是能匹配 food 中的两个 o。 |
| {n,} |
n 是一个非负整数。至少匹配n次。例如, o{2,}不能匹配 Bob中的 o,但能匹配 foooood中的所有o。 o{1,}等价于 o+。 o{0,}则等价于 o*。 |
| {n,m} |
m 和 n 均为非负整数,其中 n<=m。最少匹配 n 次且最多匹配 m 次。例如,o{1,3} 将匹配 fooooood 中的前三个 o。o{0,1} 等价于 o?。请注意在逗号和两个数之间不能有空格。 |
| (xyz) | 字符集,匹配与 xyz 完全相等的字符串. |
| [xyz] | 字符集合。匹配所包含的任意一个字符。例如,[abc] 可以匹配 plain 中的 a。 |
| [^xyz] | 负值字符集合。匹配未包含的任意字符。例如, [^abc] 可以匹配 plain 中的 p。 |
| [a-z] | 字符范围。匹配指定范围内的任意字符。例如,[a-z] 可以匹配 a 到 z 范围内的任意小写字母字符。 |
| [^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,[^a-z] 可以匹配任何不在 a 到 z 范围内的任意字符。 |
字符集简写
正则表达式提供一些常用的字符集简写。如下:
| 简写 | 描述 |
|---|---|
| . | 除换行符外的所有字符 |
| \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 行终止符 |
| \b | 匹配一个单词边界,指单词和空格间的位置。例如,er\b 可以匹配 never 中的 er,但不能匹配 verb 中的 er。 |
| \B | 匹配非单词边界。er\B 能匹配 verb 中的 er,但不能匹配 never 中的 er。 |
零宽度断言
| 符号 | 描述 |
|---|---|
| ?= | 正先行断言-存在 |
| ?! | 负先行断言-排除 |
| ?<= | 正后发断言-存在 |
| ?<! | 负后发断言-排除 |
标志 - 模式修正符
标志也叫模式修正符,因为它可以用来修改表达式的搜索结果。
这些标志可以任意的组合使用,它也是整个正则表达式的一部分。
| 标志 | 描述 |
|---|---|
| i | 忽略大小写。 |
| g | 全局搜索。 |
| m | 多行修饰符:锚点元字符 ^ $ 工作范围在每行的起始。 |
Example
身份证号
^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$