Skip to content

字符组

需要强调的是,虽然叫字符组(字符类),但只是其中一个字符

例如[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][^]中的任意一个

以上各字符组对应的可视化形式: