gpt4 book ai didi

浅析一个匹配数字和字母密码的正则表达式

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 30 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅析一个匹配数字和字母密码的正则表达式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间.

如何分析需求?拆分!这就是软件设计的一般思路了。于是乎,拆分需求如下:

1,不能全部是数字 。

2,不能全部是字母 。

3,必须是数字或字母 。

只要能同时满足上面3个要求就可以了,写出来如下:

?
1
^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

分开来注释一下:

^ 匹配一行的开头位置 。

(?![0-9]+$) 预测该位置后面不全是数字 。

(?![a-zA-Z]+$) 预测该位置后面不全是字母 。

[0-9A-Za-z] {8,16} 由8-16位数字或这字母组成 。

$ 匹配行结尾位置 。

注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符.

测试用例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Test {
   public static void main(String[] args) throws Exception {
     String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$" ;   
     String value = "aaa" ; // 长度不够
     System.out.println(value.matches(regex));
     value = "1111aaaa1111aaaaa" ; // 太长
     System.out.println(value.matches(regex));
     value = "111111111" ; // 纯数字
     System.out.println(value.matches(regex));
     value = "aaaaaaaaa" ; // 纯字母
     System.out.println(value.matches(regex));
     value = "####@@@@#" ; // 特殊字符
     System.out.println(value.matches(regex));
     value = "1111aaaa" ; // 数字字母组合
     System.out.println(value.matches(regex));
     value = "aaaa1111" ; // 数字字母组合
     System.out.println(value.matches(regex));
     value = "aa1111aa" // 数字字母组合
     System.out.println(value.matches(regex));
     value = "11aaaa11" // 数字字母组合
     System.out.println(value.matches(regex));
     value = "aa11aa11" ; // 数字字母组合
     System.out.println(value.matches(regex));
   }
}

以上所述是小编给大家介绍的一个匹配数字和字母密码的正则表达式 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

最后此篇关于浅析一个匹配数字和字母密码的正则表达式的文章就讲到这里了,如果你想了解更多关于浅析一个匹配数字和字母密码的正则表达式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com