正则表达式中的字符分类

普通字符

普通字符包括没有显示指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母,所有数字,所有标点符号和一些其它符号。


非打印字符

非打印字符也可以是正则表达式的一部分。

\cx \f \n \r \s \S \t \v
匹配由x指明的控制字符 匹配一个换页符 匹配一个换行符 匹配一个回车 匹配任何空白字符,入空格,制表符,换页符 匹配任何非空白字符 匹配以恶搞制表符 匹配一个垂直制表符

特殊字符

特殊字符就是有特殊含义的字符。

$ () * + . [ ? \ ^ { |
匹配输入字符串的结尾位置 标记一个子表达式的开始和结束 匹配前面的子表达式零次货多次 匹配前面的子表达式一次或多次 匹配除换行符之外的任何单字符 标记一个中括号表达式的开始 匹配前面的子表达式零次或一次 将下一个字符标记为特殊字符、或原意字符、或向后应用、或八进制转义字符 匹配输入字符串的开始 标记限定符表达式的开始 表明在两项之间的一个选择

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

* + {n} {n,} {n,m}
匹配前面的子表达式零次后多次 匹配前面的子表达式一次或多次 匹配前面的子表达式零次或一次 n是一个非负整数,匹配确定的n次 n是一个非负整数,至少匹配n次 m和n均是非负整数,至少匹配n次且最多匹配m次

定位符

定位符能将正则表达式固定到行首或行尾。

^ $ \b \B
匹配输入字符开始的位置 匹配输入字符串结尾的位置 匹配一个单词边界 非单词边界匹配

举例
匹配<h1>这是内容</h1>标签中的内容
正则表达式为/<h1>|</h1>/

元字符

补充上文没提到的
(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到
(?:pattern) 匹配pattern但不获取匹配结果
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配字符串,这是一个非捕获匹配
(?<=pattern) 反向肯定预查。
(?<!pattern) 反向否定预查
x|y 匹配x或y
[xyz] 字符集合
[^xyz] 负值集合,匹配为包含的任意字符
[a-z] 字符范围
[^a-z] 负值字符范围。匹配任何不在指定范围的字符