【一】正则表达式 – 教程 | 菜鸟教程 https://www.runoob.com/regexp/regexp-tutorial.html
*和+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
<123>RUNOOB-菜鸟教程</123>
贪婪<.*> 匹配结果1个:<123>RUNOOB-菜鸟教程</123>
非贪婪<.*?> 匹配结果2个:<123>、</123>
【二】CodeSheep · 程序羊:https://r2coding.com/#/README?id=正则表达式
基础正则表达式速查表
字符
| 表达式 |
描述 |
| [abc] |
字符集。匹配集合中所含的任一字符。 |
| [^abc] |
否定字符集。匹配任何不在集合中的字符。 |
| [a-z] |
字符范围。匹配指定范围内的任意字符。 |
| . |
匹配除换行符以外的任何单个字符。 |
| \ |
转义字符。 |
| \w |
匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。 |
| \W |
匹配任何非字母数字(等价于[^A-Za-z0-9_])。 |
| \d |
数字。匹配任何数字。 |
| \D |
非数字。匹配任何非数字字符。 |
| \s |
空白。匹配任何空白字符,包括空格、制表符等。 |
| \S |
非空白。匹配任何非空白字符。 |
分组和引用
| 表达式 |
描述 |
| (expression) |
分组。匹配括号里的整个表达式。 |
| (?:expression) |
非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。 |
| \num |
对前面所匹配分组的引用。比如(\d)\1可以匹配两个相同的数字,(Code)(Sheep)\1\2则可以匹配CodeSheepCodeSheep。 |
锚点/边界
| 表达式 |
描述 |
| ^ |
匹配字符串或行开头。 |
| $ |
匹配字符串或行结尾。 |
| \b |
匹配单词边界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep |
| \B |
匹配非单词边界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code。 |
数量表示
| 表达式 |
描述 |
| ? |
匹配前面的表达式0个或1个。即表示可选项。 |
| + |
匹配前面的表达式1个或多个。 |
| * |
匹配前面的表达式0个或多个。 |
| | |
或运算符。并集,可以匹配符号前后的表达式。 |
| {m} ---} |
匹配前面的表达式m个。 为了不异常显示添加了---} |
| {m,} ---} |
匹配前面的表达式最少m个。 为了不异常显示添加了---} |
| {m,n} ---} |
匹配前面的表达式最少m个,最多n个。 为了不异常显示添加了---} |
预查断言
| 表达式 |
描述 |
| (?=) |
正向预查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code。 |
| (?!) |
正向否定预查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code。 |
| (?<=) |
反向预查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep。 |
| (?<!) |
反向否定预查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep。 |
特殊标志
| 表达式 |
描述 |
| /.../i |
忽略大小写。 |
| /.../g |
全局匹配。 |
| /.../m |
多行修饰符。用于多行匹配。 |
常用正则表达式示例
数字校验
| 描述 |
正则表达式 |
备注 |
| 数字 |
^[0-9]*$ |
|
| n位数字 |
^\d{n}$ |
|
| 至少n位数字 |
^\d{n,}$ |
|
| m~n位数字 |
^\d{m,n}$ |
|
| 整数 |
^(-?[1-9]\d*)$ |
非0开头,包括正整数和负整数 |
| 正整数 |
^[1-9]\d*$ |
|
| 负整数 |
^-[1-9]\d*$ |
|
| …… |
…… |
|
字符校验
日期和时间校验
日常生活相关
互联网相关
其他