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

汉字正则表达式 ^[\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测试失败");

    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值