Java问题求解

m0_51133914 2020-10-26 12:44:45
本来想搞一个用来判断用户输入的字符串是否符合要求的程序,要求是:1.第一个必须为大写字母。2.必须包含5个数字。3.字符串长度在6-16位之间 但是搞半天最后判断长度的正则表达式不对头,怎么搞都不符合要求,具体看图,前面验证大写字母和5个数字的表达式测试过没问题,就是后面{5,15}这个问题大了,求大神指教
...全文
6535 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengbo19851985 2020-10-29
  • 打赏
  • 举报
回复
为啥不整一个前台web页面,页面上弄个输入框,在输入框中输入 然后通过输入框的maxlength控制输入长度
qq_39936465 2020-10-26
  • 打赏
  • 举报
回复
引用 3 楼 m0_51133914 的回复:
试了你这个,还是不行,输入16位以上的字符也是验证成功[/quote] 我感觉需要双重正则

Scanner in=new Scanner(System.in);
		String bds="^[A-Z]\\w*[0-9]{5,}\\w*";
		String bdt="\\w{5,15}";
		while(true) {
			String c=in.nextLine();
			if(c.matches(bds)&&c.matches(bdt)) {
				System.out.println("验证成功");
			}else {
				System.out.println("验证失败");
			}
		}
m0_51133914 2020-10-26
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465 的回复:
[quote=引用 楼主 m0_51133914 的回复:]本来想搞一个用来判断用户输入的字符串是否符合要求的程序,要求是:1.第一个必须为大写字母。2.必须包含5个数字。3.字符串长度在6-16位之间 但是搞半天最后判断长度的正则表达式不对头,怎么搞都不符合要求,具体看图,前面验证大写字母和5个数字的表达式测试过没问题,就是后面{5,15}这个问题大了,求大神指教
String bds="^[A-Z]\\w*[0-9]{5,}+${5,15}";[/quote]试了你这个,还是不行,输入16位以上的字符也是验证成功
qq_39936465 2020-10-26
  • 打赏
  • 举报
回复
引用 楼主 m0_51133914 的回复:
本来想搞一个用来判断用户输入的字符串是否符合要求的程序,要求是:1.第一个必须为大写字母。2.必须包含5个数字。3.字符串长度在6-16位之间 但是搞半天最后判断长度的正则表达式不对头,怎么搞都不符合要求,具体看图,前面验证大写字母和5个数字的表达式测试过没问题,就是后面{5,15}这个问题大了,求大神指教
String bds="^[A-Z]\\w*[0-9]{5,}+${5,15}";
KeepSayingNo 2020-10-26
  • 打赏
  • 举报
回复
字符串长度在6-16位之间就是这样写 ^.{6,16}$
唯丶丶丶 2020-10-26
  • 打赏
  • 举报
回复
引用 4 楼 qq_39936465 的回复:
引用 3 楼 m0_51133914 的回复:
试了你这个,还是不行,输入16位以上的字符也是验证成功
我感觉需要双重正则

Scanner in=new Scanner(System.in);
		String bds="^[A-Z]\\w*[0-9]{5,}\\w*";
		String bdt="\\w{5,15}";
		while(true) {
			String c=in.nextLine();
			if(c.matches(bds)&&c.matches(bdt)) {
				System.out.println("验证成功");
			}else {
				System.out.println("验证失败");
			}
		}
[/quote] 双重想法不错的。赞一个,可行,不过你这个要改下String bdt="\\w{5,16}"; 不然匹配16长度也失败
qybao 2020-10-26
  • 打赏
  • 举报
回复
呵呵,其实这个还挺简单的,当然会的话真的挺简单的


String regx = "^[A-Z]((?=(.*\\d){5})([a-zA-Z\\d]){5,15})$";
String[] testData = {
"1234567890", //全数字
"AbcdEFGhij", //全字母
"ABcd12", //数字不够5位
"12345A", //非大写字母开头
"A12345", //OK,满6位
"AB1cd2EF3gh4IJ5", //OK不满16位,至少5个数字,大写字母开头
"A123456789012345", //OK满16位,至少5个数字,大写字母开头
"Aabcdefg12345abc", //OK满16位,至少5个数字,大写字母开头
"AB1cd2EF3gh4IJ5k6" //17位
};
for (String s : testData) {
System.out.printf("%s: %s\n", s, s.matches(regx));
}

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧