求匹配 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; }