正则表达式的字符

直接量字符

字母和数字字符 自身
\o NUL字符(\u0000)
\t 制表符(\u0009)
\n 换行符(\u000A)
\v 垂直制表符(\u000B)
\f 换页符(\u000C)
\r 回车符(\u000D)
\xnn 由十六进制数nn指定的拉丁字符,例如,\x0A 等价于 \n
\uxxxx 由十六进制数xxxx指定的Unicode,例如,\u0009 等价于 \t
\cX 控制字符^X,例如,\cJ等价于换行符\n

字符类

字符 匹配
[...] 方括号内的任意字符
[^...] 不在方括号内的任意字符
. 除了换行符和其他Unicode行终止符之外的任意字符
\w 任意ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W 任意不是ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符,注意\W 和\S不同
\d 任何ASCII数字,等价于[0-9]
\D 除了ASCII数字之外的任何字符,等价于[^0-9]
[\b] 退格直接量(特例)

重复

字符 含义
{n,m} 匹配前一项至少n次,但是不能超过m次
{n,} 匹配前一项至少n次或者更多次
{n} 匹配前一项n次
? 匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}
+ 匹配前一项1次或多次,等价于{1,}
* 匹配前一项0次或多次,等价于{0,}

举例

/\d{2,4}/                  // 匹配2~4个数字
/\w{3}\d/                  // 精确匹配三个字母和一个可选数字
/\s+java\s+/               // 匹配前后带有一个或多个空格的字符串 java
/[^(]*/                    // 匹配一个或多个非左括号的字符

选择、分组和引用字符

字符 含义
选择,匹配的是该符号左边的子表达式或右边的子表达式
(...) 组合,将几个项组合为一个单元,这个单元可以通过 * + ? 等符号加以修饰,而且可以记住和这个组合相匹配的字符串以供此后的引用使用
(?...) 只组合,把项组合到一个单元,但是不记忆与该组合匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的字表达式(也可能是嵌套的),组索引是从左到右的左括号数 (?: 形式的分组不编码

锚字符

字符 含义
^ 匹配字符串的开头,在多行检索中,匹配一行的开头
$ 匹配字符串的结尾,在多行检索中,匹配一行的开头
\b 匹配一个单词的边界,简言之,就是位于\w\W之间的位置,或位于字符\w和字符串的开头或者结尾之间的位置(但需要注意,[\b]匹配的是退格符)
\B 匹配非单词边界的位置
(?=p) 零宽正向先行断言,要求接下来的字符都与p匹配,但是不能包括匹配p的那些字符
(?!p) 零宽负向先行断言,要求接下来的字符都与p不匹配

修饰符

符号 含义
i 执行不区分大小写
g 执行一个全局匹配,简言之,即找到所有的匹配,而不是在找到第一个之后就停止
m 多行匹配模式, ^ 匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容