普通字符组
字符组表示在同一个位置可能出现的各种字符,其写法是在一对方括号[]之间列出所有可能出现的字符,如,[0123456789]表示这个位置只能是0,1,2,3,4,5,6,7,8,9这10个字符,即只能出现数字。
排除型字符组
排除型字符组与普通字符组互补,表示在当前位置匹配一个没有列出的字符,其写法是在开放括号后加一个脱字符^,即[^],如,[^0-9]表示除0-9之外的字符,即非数字字符。
注:排除型字符组必须匹配一个字符。新手党常犯的一个错误就是把‘在当前位置匹配一个没有列出的字符’,错误的理解成‘在当前位置不要匹配列出的字符,不出现任何字符也可以’,但是排除型字符组必须匹配一个字符。
/^[^0-9][0-9]$/.test('8') // false
/^[^0-9][0-9]$/.test('a8') // true
范围表示法
所谓范围表示法就是用[x-y]的形式表示x到y整个范围内的字符,省去一一列出的麻烦,如,[0123456789]可以写成[0-9]。
范围表示法的实质是根据字符对应的码值(code point)来确定的,码值小的字符在前,码值大的字符在后。
字符组简记法
- \d等价于[0-9]
- \w等价于[0-9a-zA-Z_]
- \s等价于[ \t\r\n\v\f] (第一个字符是空格)
- \D,\W,\S与其互补,\d能匹配的字符,\D一定不能匹配;\w能匹配的字符,\W一定不能匹配;\s能匹配的字符,\S一定不能匹配。
- [\d\D]或者[\w\W]或者[\s\S]都可以匹配任意字符。注:点号.匹配的是除换行符以外的所有字符。