首页/开发/正则与编码速查/Unicode 字符属性类的写法
正则基础45 条

Unicode 字符属性类的写法

字符属性类按 Unicode 属性匹配字符类别或文字系统,比编码区间更可靠,适合多语言校验与汉字、标点识别。各引擎支持的属性名与生效前提不同,Python 标准库正则不支持,需按官方文档核对。

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

按字符属性匹配

字符属性类不写具体字符,而是写字符的类别,例如字母、数字、标点、空白分隔符,或某一语言文字。引擎根据字符的 Unicode 属性判定是否属于该类别,因此同一个写法可以覆盖多个字符集。

比区间可靠

用编码区间匹配非拉丁文字既难写又易错,属性类把这件事交给标准表。写多语言校验、汉字或标点识别时,属性类是首选;具体属性名与缩写以目标引擎的官方文档为准,不同引擎支持的集合并不完全一致。

基本信息

基本写法反斜杠小写 p 加花括号属性名;大写 P 表示取反
常见类别字母、大写字母、小写字母、十进制数字、标点、分隔符等
语言相关部分引擎支持按文字系统筛选,例如汉字、希腊字母
支持情况PCRE、Java、.NET、RE2 等原生支持;JavaScript 需开启 Unicode 标志;Python 标准库正则不支持,需借助扩展库
生效前提需要引擎处于 Unicode 处理模式,否则可能报错或不生效
属性名差异同一类别在各引擎里的名字与缩写不尽相同,需按文档核对

典型使用场景

  • 校验昵称只允许字母与汉字,排除数字与标点
  • 从混排文本里提取全部汉字做后续处理
  • 识别标点与空白分隔符,做分词前的预处理
  • 统计文本中各类字符的比例,例如字母与数字占比
  • 匹配不同语言的字母集合,避免为每种语言写一套区间

属性类的常见写法

属性类的常见写法
# 以下为示意写法,属性名与支持范围以目标引擎文档为准
\p{L}+             # 连续字母,不限语种
\p{Lu}             # 大写字母
\p{Nd}             # 十进制数字
\p{Han}            # 汉字(部分引擎写作语言相关集合)
\P{P}              # 取反:非标点字符
^[\p{L}\p{Nd}_]+$  # 字母数字下划线组成的标识符
(?u)\p{Script=Han} # 显式指定文字系统(视引擎语法而定)

常见类别对照

类别含义典型用途
字母各语种字母姓名、昵称校验
大写与小写按大小写细分格式化与样式检查
十进制数字十进制记数数字数值字段校验
标点各类标点符号清洗与切分
分隔符空白等分隔类分词预处理
文字系统按语言文字筛选多语言内容识别
属性类与简写类不是一回事:简写类的范围由引擎语义设置决定,可能只在 ASCII 内生效;属性类直接引用 Unicode 属性,语义更明确。字符串校验场景优先选属性类。
各引擎对属性名的写法与支持列表存在差异,同一类别可能有两种拼法。跨语言移植时先跑一遍最小用例,确认属性名被接受且行为符合预期,再批量替换模式。

易错点

  • 在不支持属性类的引擎里使用该写法,模式编译失败或匹配不到任何内容
  • 属性名写法不统一直接照搬,换引擎后语义改变
  • 未确认引擎是否处于 Unicode 处理模式,属性类不生效或报错
  • 把取反属性类当成「不含该类别字符」的整串判断,实际仍只否定单个字符

数据来源与参考

  • Unicode 标准附件:通用类别与脚本属性定义
  • PCRE2 官方文档 pcre2pattern(3):Unicode 属性支持
  • Java 官方文档 java.util.regex.Pattern:属性类语法

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

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