2019.7.31修改foritfy告警,用户隐私泄露。
1、什么是正则表达式
正则表达式,常用来检索或替换满足一定规则的字符,常称为regular expression,简写为re或regex。正则表达式在处理字符串时功能非常强大和灵活。
简单的说,正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊符号的辅助,可以让用户轻易地完成【查找、删除、替换】某特定字符串的处理过程。
2. 基本语法
3.1 行首与行尾字符^和$
例1:'^the'表示匹配的字符串以字符the开头
例2:'the$'表示匹配的字符串以字符the结尾
例3:'^$'则匹配空字符串
3.2 字符.(一定有一个任意字符)和字符* ? +(分别表示重复前一个字符0次到无穷多次,重复前一个字符0次或1次,重复前一个字符1到无穷多次)
例1:'g..d'表示g和d之间一定要存在任意两个字符,如good则可以,god不可以
例2:'goo*d'表示god、good、goood等都可以,因【o*】代表没有或多个o字符
例3:'goo+d'表示good、goood等都可以,因【o+】代表至少一个o字符
例4:'goo?d'表示只能匹配god或good,因【o?】代表零个或一个o字符
例5:'g.*d'表示g和d之间可以有任意零个或多个字符均可
例6:贪婪匹配:若用‘a.*b’来搜索aabab的话,会匹配最长以a开始,以b结束的字符串。即aabab
懒惰匹配:若用‘a.*?b’来搜索aabab的话,会匹配最短以a开始,以b结束的字符串。即aab或ab
3.3 中括号[]查找集合字符,不论有几个字符,它都仅代表某【一个】字符
例1:'t[ae]st'匹配tast或者test
例2:'[A-Za-z0-9]'匹配所有小写字母、大写字母或数字
例3:'[^A-Z]'不匹配A到Z之间所有的大写英文字母
例4:'^[^A-Z]'不匹配以大写英文字母开头的字符串。注:^符号在字符集合符号(括号[])之内与之外是不同的。在[]内代表反向选择,在[]之外则代表定位在行首的意义
3.4 限定连续字符范围{}
例1:'go{2}d'表示good,即o只能有两个
例2:'go{2, 5}d'表示g和d之间有2到5个o
例3:'go{2, }d'表示g和d之间有两个以上的o
3.5 群组字符串()
例1:'g(oo)d'即表示good
例2:'g(la|oo)d'表示glad或者good,其中【|】代表或的意思
例3:'A(xyz)+C'表示AxyzC、AxyzxyzC等都可以
3. 实战经验
参考:https://blog.csdn.net/CCLOVETT/article/details/12448843
着重于引用
pattern.compile(规则).matcher(密码).find();比如规则说的是为数字,那么在密码里只要有规则里面包含的类型那就通过find()方法返回true
后面加group()方法为返回得到的字符串。