You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PCRE正则中\p{N}的数字字符定义及中日数字不匹配问题

为什么PCRE中\p{N}匹配不到中文、日文数字?

首先得明确Unicode字符分类和\p{N}的匹配范围:

  • \p{N}对应的是Unicode通用类别里的Number(数字)类字符,这个类下面又分三个子类:
    • Nd:十进制数字,比如阿拉伯数字1、梵文数字६、卡纳达数字೬这类有明确十进制数值的字符
    • Nl:类字母数字,比如罗马数字Ⅸ
    • No:其他数字符号,比如分数¾、上标数字¹这类特殊数字标记
  • 而中文的「一、六」,日文的「一、六」这类字符,在Unicode里被归类为Lo(Other Letters,其他字母),属于表意文字的字母范畴,根本不在Number类里,自然不会被\p{N}匹配。

如果要匹配这类中文/日文数字,得单独处理:要么直接写出目标字符范围,比如[一二三四五六七八九十零〇壹贰叁肆伍陆柒捌玖拾佰仟万亿];要么先筛选CJK字符区块再匹配数字表意字。

内容的提问来源于stack exchange,提问作者julaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:52:01