1、字符元字符
[ ... ] |
匹配列表中的任意字符 |
[ ^... ] |
匹配不在列表中的任意字符 |
. |
匹配除了回车和换行符之外的任意字符 |
\w |
相当于[ A-Za-z0-9_ ],匹配任何字母、数字、下划线字符,这样的字符也称单词字符。 |
\W |
相当于[ ^A-Za-z0-9_ ],不匹配任何字母、数字、下划线字符。 |
\d |
相当于[ 0-9 ],匹配任意单个的数字字符。 |
\D |
相当于[ ^0-9 ],匹配除数字之外的任何单个字符。 |
\s |
匹配空白字符,空白字符是指空格、Tab字符和回车换行符。 |
\S |
匹配任何非空白字符。 |
2、重复元字符
x? |
匹配0个或1个x。 |
x+ |
匹配一个或多个x,即至少匹配一个x。 |
x* |
匹配0个或多个x。 |
x{ n } |
匹配n个x。 |
x{ n, } |
匹配n个x |
x{ n,m } |
至少匹配n个x,最多匹配m个x,即匹配n到m个x。 |
3、定位元字符
^ |
匹配必须出现在字符串的开头或行的开头 |
$ |
匹配必须出现在以下位置:字符串结尾、字符串结尾处的\n之前或行的结尾。 |
\b |
匹配单词的开始或结束 |
\B |
匹配非单词的开始或结束 |
x( ? = y ) |
正向肯定预查。只有在x后面跟上y时,才匹配x成功。 |
x( ? ! y ) |
正向否定预查。只有在x后面不跟上y时,才匹配x成功。 |
( ?<= x )y: |
反向肯定预查。只有y前面跟x时,才匹配y成功。JS中不支持。(反向等,为在正向等前加<) |
( ?< ! x )y: |
反向否定预查。只有y前面不跟x时,才匹配y成功。JS中不支持。(反向不等,为在正向等前加<) |
4、分组和替换字符
x | y |
匹配x或y |
( content ) |
反向引用,将子表达式content作为一个整体处理,括号的作用相当于代数中括号的作用,并将捕获的子匹配保存在\1,\2,......和$1,$2,......中。例如:/a(bc)+/ |
(?: content) |
分组子模式,但是不捕获子模式。它的作用与(content)类似,称为无记忆匹配。 |
\1,\2,\3,... |
在正则表达式中,分别包含与正则表达式中第一个反向引用,第二个反向引用,第三个反向引用相匹配的字串。 |
$1,$2,$3,... |
在替换中,分别包含与正则表达式中第一个反向引用、第二个反向引用。第三个反向引用相匹配的字串。 |
5、特殊字符
特殊字符是指那些不容易进行直接书面表达或不容易直接使用键盘输入的字符
\ 0 |
匹配null字符,对应的十六进制值为 \x00 |
\ b |
匹配退格字符,对应的十六进制值为 \x08 |
\ n |
匹配换行字符,对应的十六进制值为 \x0A |
\ r |
匹配回车字符,对应的十六进制为 \x0D |
\ f |
匹配换页字符,对应的十六进制为 \x0C |
\ t |
匹配制表(TAB)字符,同时对应于水平制表符 \x09和垂直制表符 \x0B |
\ xhh |
匹配2个十六进制数字表示的字符 |
\ uhhhh |
匹配用4个十六进制数字表示的字符,这些字符是Unicode字符 |
\ cchar |
匹配命名的控制字符 |
6、需要转义的字符
. * + ( ) $ / \ ? [ ] ^ { } - ! < >
7、常见正则表达式
[ \u4e00-\u9fa5 ] |
匹配任意一个汉字 |
[ 1- 9 ]?[ 0-9 ] | 100 |
匹配 0-100 的数字 |
\n [ \s| ] * \r |
匹配空行的正则表达式 |