首页/开发/正则与编码速查/数字与单词字符类的含义
正则基础45 条

数字与单词字符类的含义

数字类与单词类是最常用的预定义字符类:前者匹配一个数字字符,后者匹配字母、数字与下划线。它们的实际范围由引擎的字符语义决定,ASCII 与 Unicode 语义下结果不同,严格校验应改用显式区间。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌​‌​​‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

两个最常用的简写

数字类简写匹配一个数字字符,单词类简写匹配一个字母、数字或下划线。它们都属于预定义字符类,写法短,但范围由引擎的语义设置决定,而不是由写下它们的程序员决定。

范围会变

在 ASCII 语义下,数字类只认半角数字,单词类只认英文字母、半角数字与下划线;在 Unicode 语义下,两者的范围都会扩展到全角数字、其它文字系统的数字与字母。同一模式在同一个引擎里开启不同标志就可能得到不同结果。

基本信息

数字类默认匹配半角数字,Unicode 语义下可扩展到其它数字字符
单词类字母、数字、下划线三种集合的并集
取反写法对应的大写形式表示不属于该集合的任意字符
ASCII 开关Python 提供只认 ASCII 的标志,Java 提供 Unicode 字符类开关,方向相反,需按文档设置
等价显式写法数字可用区间写出,单词字符需写成若干集合的并集
校验建议严格校验字段时使用显式区间,不依赖简写类

典型使用场景

  • 校验纯数字字段,例如编号、金额、端口号
  • 提取标识符或变量名,此时下划线必须被当作合法字符
  • 清洗文本中的非字母数字字符
  • 区分「字母数字混排」与「含符号」的两类输入
  • 判断网页标签或短链接字符集是否合法

简写类与显式写法

简写类与显式写法
import re
re.fullmatch(r'\d+', '12345')          # 逐字符校验纯数字
re.fullmatch(r'[0-9]+', '12345')        # 显式区间:不受 Unicode 语义影响
re.findall(r'\w+', 'user_id2')          # 下划线算单词字符,会被一起取出
re.findall(r'\w+', '汉字 abc')          # 文本模式下汉字也常被算作单词字符
re.findall(r'\w+', '汉字 abc', re.A)    # 打开 ASCII 标志后只按半角判断
re.findall(r'\D+', 'a1b2')              # 取反:非数字字符片段

简写类与显式写法对照

简写ASCII 语义范围常见显式替代
数字类半角数字区间 0 到 9
单词类字母数字下划线三类集合的并集
取反数字非半角数字除区间外的任意字符
取反单词不含下划线与字母数字显式排除集合
下划线被算作单词字符是一个高频反直觉点。做变量名或标识符提取时它符合预期,做「纯字母数字」校验时它就成了漏网之鱼,必须显式排除。
各引擎默认采用的字符语义并不统一:有的默认 Unicode 感知,有的默认 ASCII,开关名称与方向也不同。写跨语言模式时,不要凭印象判断,先在目标环境里实测一次。

易错点

  • 用单词类校验用户名却忘了它包含下划线,规则比预期宽松
  • 依赖数字类做严格数字校验,Unicode 语义下全角数字也能通过
  • 跨语言复制依赖简写类的模式,默认字符语义不同导致结果不一致
  • 把取反单词类当成「非字母」使用,实际它还会匹配空格与标点

数据来源与参考

  • PCRE2 官方文档 pcre2pattern(3):预定义字符类与 Unicode 选项
  • Python 官方文档 re 模块:\d、\w 与 ASCII 标志
  • Java 官方文档 java.util.regex.Pattern:Unicode 字符类开关

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/regex-digit-word-class.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌​‌​​‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​