unicode 中日韩统一表意文字 java正则表达式

java 专栏收录该内容
10 篇文章 0 订阅

汉字正则表达式 ^[\u4e00-\u9fa5]{0,}$ 有点过时了

参考wiki:中日韩统一表意文字 :

长度大于4位的unicode 正则 需要 \x{h...h} 形式表示

public class PatternUtil {
    private PatternUtil() {}
    public static final String UNIHAN_PATTERN = "^[" +
            "\\u4E00-\\u9FA5" + //1993中日韩统一表意文字
            "\\u3007" + //1个汉字(U+3007,〇),于中日韩符号和标点区
            "\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29" + //位于“兼容表意文字区”中但实则独一的汉字
            "\\u3004-\\u4DB5" + //中日韩统一表意文字扩展区A
            "\\x{20000}-\\x{2A6D6}" + //中日韩统一表意文字扩展区B
            "\\u9FA6-\\u9FB3\\u9FB4-\\u9FBB" + //HKSCS-2004中未加入ISO 10646的汉字和GB 18030-2000中未加入ISO 10646的印刷業常用的偏旁和字形部件
            "\\u9FBC-\\u9FC2\\u4039\\u9FC3" + //7个日语汉字,䀹拆分为䀹和鿃
            "\\x{2A700}-\\x{2B734}" + //中日韩统一表意文字扩展区C
            "\\u9FC4-\\u9FCB" + //2个日语用汉字、1个新增汉字、在HKSCS-2004推出后新增的5个香港汉字
            "\\x{2B740}-\\x{2B81D}" + //中日韩统一表意文字扩展区D 其中包括公安部身份证系统人名和地名用字31字
            "\\u9FCC" + //1个汉字(U+9FCC鿌)
            "\\x{2B820}-\\x{2CEA1}" + //中日韩统一表意文字扩展区E
            "\\u9FCD-\\u9FCF\\u4CA4\\u9FD0\\u9FD1-\\u9FD5" + //“急用汉字”:《通用规范汉字表》余下未收入的3个汉字,1个从䲤分离出来的字䲤,5个其他图书用字及化学元素用字
            "\\x{2CEB0}-\\x{2EBE0}" + //中日韩统一表意文字扩展区F
            "\\u9FD6-\\u9FEA" + //21个汉字
            "\\u9FEB-\\u9FEF" + //	5个汉字,前三个是新命名的化学元素用字,后两字来自日本
            "\\x{30000}-\\x{3134A}" + // 中日韩统一表意文字扩展区G
            "\\u9FF0-\\u9FFC\\u4DB6-\\u4DBF" + //急用科学与技术用字、10个需分离的汉字
            "\\x{2A6D7}-\\x{2A6DD}" + //昆曲工尺谱用字
            "\\x{31400}-\\x{33D1F}" + //预计放置小篆
            "\\x{33E00}-\\x{355FF}" + //预计放置甲骨文
            "]{0,}$";
}

 java 字符转义不支持直接输入5位的unicode,也不支持大U表示,如需转义表示(通常是字体不支持时)使用Unicode代理对转义 进行test 测试

如\u2b740  需要转换为\uD86D\uDF40 

Unicode代理对计算器

    @Test
    public void pattern(){
        Assert.isTrue(Pattern.compile(PatternUtil.UNIHAN_PATTERN).matcher("﨏〇鿇鿈鿉鿊鿋㵥鿑鿒鿓鿔鿕" +
                "鿃龼龽龾龿鿀䜤鿂龴龵龶龷龸龹龺龻龦龧龨龩龪龫龬龭龮龯龰龱龲龳" +
                "﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧﨨﨩鿅鿄鿆鿍鿎鿏䲤䲤鿑鿒鿓鿔鿕\uD86D\uDF40"+
                "中華人民共和國臺灣省").matches(),"汉字pattern测试失败");

    }

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值