字符集与范围是正则中匹配单个字符的核心机制,用[]定义,可明确列举字符、用-表示连续区间、^开头表示反向匹配,且支持预定义字符类如\d、\w等嵌入使用。

正则表达式中字符集与范围是匹配“单个字符”的核心机制,它们用方括号 [] 定义,作用是告诉引擎:此处可接受哪些字符中的任意一个。
字符集的基本写法:明确列出可选字符
用 [] 包裹若干字符,表示匹配其中任意一个。
-
[aeiou]→ 匹配 a、e、i、o、u 中的任一字母 -
[0123456789]→ 匹配任意一位数字 -
[abcABC]→ 匹配 a、b、c、A、B 或 C 中的任一个
注意:
- 不管括号里写多少字符,它只消耗输入字符串中的一个位置
- 顺序无关,
[ab]和[ba]效果完全一样 - 如果要匹配字面意义的
]、^、-,需特殊处理(见后文)
字符范围:用连字符 - 表示连续区间
当字符在 ASCII(或 Unicode)编码中连续时,可用 - 简写。
-
[a-z]→ 小写字母(a 到 z,含 a 和 z) -
[A-Z]→ 大写字母 -
[0-9]→ 数字 0 到 9 -
[a-zA-Z0-9_]→ 字母、数字或下划线(等价于\w)
关键规则:
- 范围必须按编码值从小到大写,如
[z-a]、[9-1]是语法错误(JavaScript 直接报SyntaxError) -
-只有在两个字符之间才表示范围;放在开头或结尾时,它就是普通字符:-
[-abc]→ 匹配-、a、b或c -
[abc-]→ 同样匹配-、a、b或c
-
- 混合写法允许:
[a-zA-Z0-9_.-](末尾的-不触发范围逻辑)
反向字符集:排除指定字符
在 [] 开头加 ^(仅限第一个字符),表示“匹配不在该集合中的任意一个字符”。
-
[^0-9]→ 匹配任意非数字字符 -
[^aeiou]→ 匹配非元音字母的字符(包括辅音、数字、符号、空格等) -
[^a-z]→ 匹配非小写字母的字符
注意:
-
^必须紧贴左括号[,不能有空格或其它字符在前 -
[^]是无效写法,多数引擎会报错或行为未定义
预定义字符类作为简写形式
这些是常用字符集的缩写,语义固定,不依赖 []:
-
\d⇔[0-9] -
\w⇔[a-zA-Z0-9_] -
\s⇔ 匹配空白字符(空格、制表符、换行等) - 对应的大写形式为反义:
\D、\W、\S
它们可嵌入 [] 中使用,例如:
-
[\w.]→ 匹配字母、数字、下划线或点号 -
[\d\s]→ 匹配数字或任意空白字符
不复杂但容易忽略











