身份证号(18位):(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)
必须包含字母数字的6-10位密码:^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$
解析:
^ $ 分别表示匹配开始 结束位置
(?![0-9]+$) 预测该位置后面不全是数字
(?![a-zA-Z]+$) 预测该位置后面不全是字母
[0-9a-zA-Z]{6,10} 由6-10位数字或字母组成
必须包含数字字母下划线的6-10位密码:^((?=.*[0-9].*)(?=.*[A-Za-z].*)(?=.*_.*))[_0-9A-Za-z]{6,10}$
匹配中文:[\u4e00-\u9fa5]
匹配双字节字符:[^\x00-\xff]
去重的正则匹配式:
s = "aaaccccdffueee";
s.replaceAll("(.)\\1+", "$1");
(.)表示分组,组号从1开始,此组内容是 任意一个字符
\\1 第一个 \ 表示转义字符, \1表示引用第一组内容
$1 引用上个正则表达式的第一组的内容
基本语法:
\d:任意数字 \D:非数字[^0-9]
\w:字母数字下划线 \W:非字母数字下划线
\s:任意空白字符 \b:边界
^:开始位置(或者是非) $:结束位置
?:出现0或1此 *:出现0或多次
+:出现1或多次 {m}:出现m次
{m,}:至少出现m次 {m,n}:出现m次到n次
():用于分组 (x|y):x或y
[abc]:abc任意一个字符 [0-9]:任意一位数字