背景
由于重构,有关我们的密码的规则重新定义了下,并且兼容之前的,但是了这个规则还是不是很好匹配的样子,最后还是弄出来了,知道了有关正则的专业名词,纪录下;
匹配字母数字符号
(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[\\x21-\\x7e]).*
Java代码验证
public static boolean validateStrengthPasswd(String str){
String regex = "(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[\\x21-\\x7e]).*";
return match(regex,str);
}
public static boolean match(String regex,String str){
Pattern pattern = Pattern.compile(regex);
Matcher macther = pattern.matcher(str);
return macther.matches();
}
零宽断言
摘自百度百科 :
零宽断言是正则表达式中的一种方法,正则表达式在计算ji科学中,是指一个用来描述或者匹配一系列符号某个句法规则的字符串的单个字符。
1.1、(?=exp)也叫零度正预测先行断言,断言自身出现的位置后面能匹配表达式exp。
1.2、(?<=exp)也叫零宽度正回顾后发断言,断言自身出现的位置的前面能匹配表达式exp。
1.3、(?!exp)也叫零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。
1.4、(?<!exp)也叫零宽度负回顾后发断言,断言此位置的前面不能匹配表达式exp。
部分正则符号意义
?等价匹配长度{0,1}即是0个或者1个。
等价匹配长度{0,}即是0个或者多个。
+等价匹配长度{1,}即是1个或者多个。
\d等价于[0-9]。
\D等价于[^0-9]
\w等价于[0-9_A-Za-z]
\W等价于[^0-9_A-Za-z]
^开始符号
[]不包含的意思,这里面的是非得意思
.任意一个字符
.匹配任意字符
$结束符号
\转义
{n,m}匹配n到m长度
[W,H,M]包含W或者H或者M的字母
()表示域段
浩语
__
__ _ ____ __| |__ _____ ___
\ \/ \/ / | \ | \\__ \ / _ \
\ /| | / Y \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
2016,To Work Hard,To Adapter,To Change Myself!!!