正则表达式:2到8个中文字符4到16个英文字符数字下划线,可混合

求匹配 4到16个字节 的 中文,英文字母,数字,下划线 混合 的字符串的正则表达式.

(假设一个中文字符算两个字节,其它算一个字节)


匹配中文字符的正则表达式: [\u4e00-\u9fa5]


匹配双字节字符(包括汉字在内):[^\x00-\xff]


何必这么执着呢,分开来嘛

先判断输入是否合法,即满足中文、英文、数字、字母或者下划线

再判断长度合不合法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Check =  function (str)   
{  
     var  reg = /^[\u4e00-\u9fa5a-z\d_]{2,}$/gi;
     if  (reg.test(str))
     {
         var  len = str.replace(/[^\x00-\xff]/g, "aa" ).length;
         if  (len < 4 || len > 16)
         {
             return  false ;
         }
 
         return  true ;
     }
     
     return  false ;
};

/**
 * 正则表达式:1到8个中文字符2到16个英文字符数字下划线,可混合
 */
public static boolean notBlankAndMatchRegexONE(String source) {
    if (StringUtils.isBlank(source)) {
        return false;
    }
    String reg = "^[\\u4e00-\\u9fa5a-zA-Z\\d_]{1,}$";
    String replaceReg = "[^\\x00-\\xff]";
    if (source.matches(reg))
    {
        int len = source.replaceAll(replaceReg,"aa").length();
        if (len < 2 || len > 16)
        {
            return false;
        }

        return true;
    }

    return false;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值