引用
参考资料
语法
普通字符
字符 |
描述 |
[aeiou] |
匹配[ ] 中的所有字符 |
[^aeiou] |
匹配除[ ] 中的所有字符 |
[A-Z] |
[A-Z] 表示一个区间,匹配所有大写字母 |
\w |
匹配字母、数字、下划线,等价于[A-Za-z0-9_] |
\d |
匹配阿拉伯数字,等价于[0-9] |
非打印字符
字符 |
描述 |
\cx |
由x指明的控制字符。如\cM 匹配一个 Control-M 或回车符 |
\f |
换页符,等价于\x0c \cL |
\n |
换行符,等价于\x0a \cJ |
\r |
换行符,等价于\x0d \cM |
\s |
空白符,等价于[\f\n\r\t\v] |
\S |
非空白符,等价于[^\f\n\r\t\v] |
\t |
制表符,等价于\x09 \cI |
\v |
垂直制表符,等价于\x0b \cK |
特殊字符
字符 |
描述 |
( ) |
子表达式 |
(...)* |
匹配前面子表达式零次或多次 |
(...)+ |
匹配前面子表达式一次或多次 |
(...)? |
匹配前面子表达式零次或一次 |
(...)|(...) |
匹配| 两边的任意一种 |
. |
匹配除换行符外的任一字符,等价于[^\n\r] |
定位符
字符 |
描述 |
^ |
字符串开始的位置 |
$ |
字符串结尾的位置 |
\b |
匹配一个单词的边界 |
\B |
非单词边界匹配 |
\<n> |
匹配第n 个捕获组的内容,进行反向引用 |
限定符
字符 |
描述 |
{n,m} |
其中n <= m,放在子表达式后,最少匹配n次,最多匹配m次,缺少其中一个数字则表示不设限 |
{n} |
匹配确定的n次 |
贪婪与非贪婪量词
默认情况下,量词(*
+
?
{}
)会尽可能匹配多个字符(贪婪的),量词后加?
会使其尽可能少匹配(非贪婪的)。具体可见这里
正向与负向检查
字符 |
描述 |
(?=...) |
正向肯定检查,匹配后面跟着特定模式的位置 |
(?!...) |
正向否定预查,匹配后面不跟着特定模式的位置 |
(?<=...) |
反向肯定预查,匹配前面是特定模式的位置 |
(?<!...) |
反向否定预查,匹配前面不是特定模式的位置 |
修饰符
/.../g
中的g就是一个修饰符
字符 |
描述 |
i |
忽略大小写 |
g |
全局匹配 |
m |
改变^ 和$ 的行为,使其匹配每行的开头和结尾,而不仅是整个字符串的开头和结尾 |
s |
单行模式 |
u |
Unicode模式 |
y |
粘性匹配,从目标字符串的当前位置开始匹配(使用lastIndex 属性) |
x |
扩展模式,忽略模式中的空白和注释,使正则表达式更易读 |
示例
匹配a某c
匹配一个正整数
匹配一个两位数
匹配开头为nig
的单词
匹配开头为nig
的字符串
匹配含有ay
但不在结尾的单词
查找重复的单词
匹配后面跟着95
或98
的Windows
匹配一个邮箱
1
| /\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b/g
|
其中
[\w.%+-]+
匹配一个由字母、数字、下划线、.
、%
、+
、-
或*
组成的字符串
[a-zA-Z]{2,6}
至少由2-6个字符组成的字符串
匹配HTML标记
1
| /<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?>/g
|
匹配多于两个a的字符串
贪婪与非贪婪的区别
对于同一个字符串 <h1> 正则表达式的用法 </h1>
,一般情况下的匹配
会匹配整个字符串的内容(整个字符串都符合),但在非贪婪下的匹配
或者
只匹配到<h1>