③ 字元類
將單獨的直接量字元放進方括弧內就可以組合成字元類。一個字元類和它所包含的任何字元都匹配。所以Regex/[abc]/就和字母"a","b","c"中的任何一個字母都匹配。
alert(/[abc]/.test("a")); //truealert(/[abc]/.test("b")); //truealert(/[abc]/.test("c")); //true
另外,還可以定義否定字元類。這些類匹配的是不包含在方括弧之內的所有字元。定義否定字元類的時候,要將一個^符號作為左方括弧後的第一個字元。Regex/[^abc]/匹配的是"a","b","c"之外的所有字元。字元類可以使用連字號來表示一個字元範圍。要匹配拉丁字母集中的任何小寫字元,可以使用/[a-z]/,要匹配拉丁字母集中任何字母數字字元,可以使用/[a-z A-Z 0-9]/。
由於某些字元類非常常用,所以JavaScript的Regex文法就包含了一些特殊字元和逸出序列來表示這些常用的類。例如\s匹配的是空格符、定位字元和其他Unicode空白符,\S匹配的是非Unicode空白符。下標列出了這些特殊的字元:
Regex的字元類
字元 |
匹配 |
[...] |
位於括弧內的任一字元 |
[^...] |
不在括弧內的任一字元 |
. |
除分行符號和其他Unicode行終止符之外的任一字元 |
\w |
任何ASCII單字字元,等價於[ a-zA-Z0-9_ ] |
\W |
任何非ASCII單字字元,等價於[ ^a-zA-Z0-9_ ] |
\s |
任何Unicode空白符 |
\S |
任何非Unicode空白符的字元 |
\d |
任何ASCII數字,等價於[ 0-9 ] |
\D |
除了ASCII數字之外的任何字元,等價於[ ^0-9 ] |
[\b] |
退格直接量(特例) |
注意,在方括弧之內也可以使用這些特殊的字元類逸出序列。例如\s匹配的是所有的空白符,\d匹配的是所有數字,那麼/ [ \s\d ] /就匹配任意的空白符或者數字。注意這裡有一個特例,下面我們將會看到逸出序列\b具有特殊含義,當用在字元類中時,它表示的是退格符,所以要在Regex中按照直接量表示一個退格符,只需要使用具有一個元素的字元類/ [\b] /。