JavaScript 正则表达式 字符类

JavaScript 正则表达式中,将单独的直接量字符放进方括号内就可以组合成字符类。在正则表达式中,字符类描述的是一个聚集,一个字符类和它所包含的任何字符都匹配。例如,正则表达式/[abc]/和字母”a”,”b”,”c”中的任何一个都匹配。下面就来简单介绍一下JavaScript正则表达式的出字符类。

字符类——用枚举定义聚集:

刚才给大家的例子中已经说明了,字符类定义的其实是一个聚集枚举。字符类与其包含的任何字符都匹配。大家看我上面给的例子就可以看出,不啰嗦了。

为何用字符类:

JavaScript 的正则表达式是支持布尔操作的,我们如果想匹配字母”a”,”b”或者”c”时可以通过之前提到过的正则表达式直接量来用布尔的形式定义,示例如下:

//为了说明正则表达式支持布尔型操作
var pattern = /a|b|c/;

之所以用字符类,是因为当要匹配的成员很多时,用字符类显然会比用布尔操作简单的多。

字符类——支持范围定义:

字符类除了枚举定义聚集外,还支持范围定义,其语法结构为:/[begin_data-end_data]/,示例如下:

//定义正则表达式匹配0-9
var pattern = /[0-9]/;


//定义正则表达式匹配数字0-9及字母a-z
var pattern = /[0-9a-z]/;

字符类——支持布尔非操作:

呃, 什么叫布尔非呢?就是布尔型里面的取反操作,也就是非嘛。。您说正,那么我就想要负的,您说大于我就说小于等于。就是这么个道理。字符类也支持布尔的非操作,只需要在括号中字符集的前面加符号”^”即可。

//匹配除字母a,b,c之外的任何一个字符
var pattern = /[^abc]/;

JavaScript 字符类缩写:

字符类缩写这个名字是我起的,呵呵。因为上述所说一些观点,大家也可以看出来了,字符类是相当的好用。为此,JavaScript的正则表达式语法就包含了一些特殊字符和转义序列来表示这些常用的类(大多数编程语言现在大都支持此类操作),使您可以很方便的使用。下面我把书中列出的字符类缩写来给大家列出来,方便阅读,呵。不过需要注意一下,有些字符类转义序列只匹配ASCII字符,还没有扩展到可以处理Unicode字符,可以显示地定义自己的Unicode字符类。

字符 匹配
[...] 位于括号之内的任意字符
[^...] 不丰括号之中的任意字符
. 除换行符和其他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] 退格直接量(特例)

上表所列这些“缩写”在我们处理正则表达式匹配条件时经常用到,如果有用到的同志以后忘记了可以来这里查一下(说给我自己的),至于为啥说[\b]退格符是特例,稍后的日志中我会说明的。这里不是挖坑,而是一句半句说不清楚。