基础
实例 | 描述 |
---|---|
[Pp]ython | 匹配 “Python” 或 “python”。 |
rub[ye] | 匹配 “ruby” 或 “rube”。 |
[abcdef] | 匹配中括号内的任意一个字母。 |
[0-9] | 匹配任何数字。类似于 [0123456789]。 |
[a-z] | 匹配任何小写字母。 |
[A-Z] | 匹配任何大写字母。 |
[a-zA-Z0-9] | 匹配任何字母及数字。 |
[^au] | 除了au字母以外的所有字符。 |
[^0-9] | 匹配除了数字外的字符。 |
{M,N} | 区间M是下界而N是上界。 |
实例 | 描述 |
---|---|
. | 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。 |
? | 匹配一个字符零次或一次,另一个作用是非贪婪模式 |
+ | 匹配1次或多次,等价于{1,} |
* | 匹配0次或多次,等价于{0,} |
\b | 匹配一个长度为0的子串,匹配的是单词的边界,\bmaster\b 就仅匹配有边界的master单词。 |
\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_]‘。 |
^ | 指定的是一个字符串的开始,/^python/ 以python开头 |
$ | 指定的是一个字符串的结束,/python$/ 以python结尾 |
进阶
实例 | 描述 |
---|---|
() | 分组,2222-3333333,/(\d{4})-(\d{7})/ 捕获 2222 和 3333333 |
| | or,/( .jpg | .gif | .png)/ |
(?:表达式) | 非捕获分组,分组匹配之后,不需要的用 ?: 表达式: /(\d{4})-(\d{2})-(?:\d{2})/ 文本: 2019-10-28 |
\N | 分组的回溯引用 ,\1 表示的就是第一个分组 表达式: /<(\w+)>.*?</\1>/ 文本: <font>hi</font> |
断言
实例 | 描述 |
---|---|
(?=表达式) | 正向先行断言,指在某个位置向右看,表示所在位置右侧必须能匹配表达式。喜欢(?=你) :表示喜欢的后面必须有你字才能匹配到(?=.*?[a-z])(?=.*?[A-Z]).+ 这段正则表达式规定了匹配的字符串中必须包含至少一个大写和小写的字母。 |
(?!表达式) | 反向先行断言,如果要取出喜欢两个字,喜欢(?!你) 要求这个喜欢后面没有你 |
(?<=表达式) | 正向后行断言,指在某个位置向左看,表示所在位置左侧必须能匹配表达式 如果要取出喜欢两个字,要求喜欢的前面有我,后面有你, (?<=我)喜欢(?=你) 。 |
(?<!表达式) | 反向后行断言,要求喜欢的前面没有我,后面没有你,(?<!我)喜欢(?!你) |