字符组
需要强调的是,虽然叫字符组(字符类),但只是其中一个字符
例如[abc]
表示匹配一个字符,它可以是a
,b
,c
之一
范围表示法(-)
如果字符组里的字符特别多的话,怎么办?可以使用范围表示法
比如[123456abcdefGHIJKLM]
,可以写成[1-6a-fG-M]
用连字符-
来省略和简写
因为连字符有特殊用途,那么要匹配a
,-
,z
这三者中任意一个字符,该怎么做呢?
不能写成[a-z]
因为其表示小写字符中的任何一个字符
可以写成如下的方式: [-az]
或者[az-]
或者[a\-z]
即要么放在开头,要么放在结尾,要么放在转义.总之不会让引擎认为是范围表示法就行了
排除字符组(^)
纵向模糊匹配,还有一种情形就是,某位字符可以是任何东西,但就是不能是a
,b
,c
此时就是排除字符组(反义字符组)的概念例如[^abc]
,表示是一个除a
,b
,c
之外的任何一个字符.字符组的第一位放上^
表示取反的意思
INFO
中括号里面加^ 表示取反,要是没有中括号,^就是表示行开头
当然也有相应的范围表示法
常见的简写形式(大写表示取反)
有了字符组的概念后,一些常见的符号我们也就理解了,因为他们都是系统自带的简写形式
\d
INFO
表示[0-9]
表示是一位数字, 记忆范式: digit (数字)
\D
INFO
表示[^0-9]
表示除数字外的任意字符
\w
INFO
表示[0-9a-zA-Z_]
表示数字,大小写字母和下划线 记忆范式: w 是 (word) 的简写, 单词字符
/W
INFO
表示[^0-9a-zA-Z_]
表示非单词字符
\s
INFO
表示[\t\v\n\r\f]
表示空白字符,包括空格,水平制表符,垂直制表符,换行符,回车符,换页符
记忆方式: s 是 (space) 的简写,空白字符
.
INFO
表示 [^\n\r\u2028\u2029]
。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符 除外
记忆方式:想想省略号 … 中的每个点,都可以理解成占位符,表示任何类似的东西
如果要匹配任意字符怎么办? 可以使用 [\d\D]
,[\w\W]
,[\s\S]
和[^]
中的任意一个
以上各字符组对应的可视化形式: