普通字符
字符 |
描述 |
---|---|
[ABC] |
匹配[...] 中所有字符 例如 [l] 匹配字符串 "hello" 中所有的 l 字母 |
[^ABC] |
匹配除[...] 中字符外的所有字符 |
[A-Z] |
表示一个区间 匹配A-Z间的所有字母 |
. |
匹配除换行符之外的任意字符 相等于[^\n\r] |
\s |
匹配所有空白符(空格、制表符、换页符等等) 包括换行 等价于 [ \f\n\r\t\v] 注意 Unicode 正则表达式会匹配全角空格符 |
\S |
匹配所有非空白符 等价于[^ \f\n\r\t\v] |
\w |
匹配字母、数字、下划线 等价于 [A-Za-z0-9_] |
限定符
字符 |
描述 |
---|---|
* |
匹配前面的子表达式零次或多次 |
+ |
匹配前面的子表达式一次或多次 |
? |
匹配前面的子表达式零次或一次 |
{n} |
n 是一个非负整数 匹配确定的 n 次 |
{n,} |
n 是一个非负整数 至少匹配n 次 |
{n,m} |
m 和 n 均为非负整数,其中n <= m 最少匹配 n 次且最多匹配 m 次 注意在逗号和两个数之间不能有空格 |
*
和+
限定符都是贪婪的,因为它们会尽可能多的匹配文字如果要实现非贪婪或最小匹配,只要在它们的后面加上一个
?
<h1>hello,world!</h1>
#贪婪:下面的表达式匹配从开始的小于符号 (<)
#到关闭 h1 标记的大于符号 (>) 之间的所有内容
/<.*>/
#非贪婪:如果您只需要匹配开始和结束 h1 标签,
#下面的非贪婪表达式只匹配 <h1>。
/<.*?>/
定位符
字符 |
描述 |
---|---|
^ |
匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配 |
$ |
匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配 |
\b |
匹配一个单词边界,即字与空格间的位置 |
\B |
非单词边界匹配 |
注意:不能将限定符与定位符一起使用。由于在紧靠换行或者单词边界的前面或后面不能有一个以上位置,因此不允许诸如
^*
之类的表达式。若要匹配一行文本开始处的文本,请在正则表达式的开始使用
^
字符。不要将^
的这种用法与中括号表达式内的用法混淆。若要匹配一行文本的结束处的文本,请在正则表达式的结束处使用
$
字符。
特殊字符
查找特殊字符 必须转义 即添加
\
$ ( ) * + . [ ] ? \ ^ { } |
非打印字符
字符 |
描述 |
---|---|
\cx |
匹配由x指明的控制字符 例如 \cM 匹配一个 Control-M 或回车符 x 的值必须为 A-Z 或 a-z 之一 否则,将 c 视为一个原义的 'c' 字符 |
\f |
匹配一个换页符 等价于 \x0c 和 \cL |
\n |
匹配一个换行符 等价于 \x0a 和 \cJ |
\r |
匹配一个回车符 等价于 \x0d 和 \cM |
\t |
匹配一个制表符 等价于 \x09 和 \cI |
\v |
匹配一个垂直制表符 等价于 \x0b 和 \cK |
高级
?=、?<=、?!、?<!
的使用区别
exp1(?=exp2)
:查找 exp2 前面的 exp1(?<=exp2)exp1
:查找 exp2 后面的 exp1。exp1(?!exp2)
:查找后面不是 exp2 的 exp1。(?<!exp2)exp1
:查找前面不是 exp2 的 exp1。
Comments NOTHING