import java.util.Random; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /**随机验证码数字+字母的难点就是怎么用字符串的形似表现出来, 因为Random只随机出数字类型的随机数,而String类型却要先行转换成StringBuffer类型, 通过对字符的处理来获得数字类型的字符下标来获得字符, 然后通过StringBuffer来拼接字符成为字符串, 然后通过toString来获得StringBuffer的字符串输出, 然后才能进行比较。*/ public class Tesat3 { public static void main(String[] args) { String str= "qwertyuiopasdfghjklzxcvbnm1234567890Q";//大写字母写不下了 Random random = new Random(); Scanner scanner = new Scanner(System.in); boolean b = true; boolean c = true; while (b)//控制循环 { c = true; StringBuffer sb = new StringBuffer(); for (int i = 0; i < 4; i++)//随机获取四个String类型str的字符 { int number = random.nextInt(str.length());//随机一个str的长度位置数字下标 sb.append(str.charAt(number));//接收随机位置上的字符 } //另外一种思路是char类型的字符可以用数字表示,ascii表有字母表对应的数字,通过随机这些 //数字来表示字母,也可以生成字母数字混合验证码 String str3 = sb.toString();//接收sb的字符串 System.out.println(sb); System.out.println("请输入验证码"); int num = 0; while (c)//控制循环 { num++; // System.out.println(num);//计算输入次数 String str2 = scanner.next(); Pattern compile = Pattern.compile("[a-zA-Z_0-9]{4}"); Matcher matcher = compile.matcher(str2);//进行字符合法性比较 boolean matches = matcher.matches(); if (matches) { // System.out.println("1"+matches); //忽略大小写的比较str.equalsIgnoreCase(str3) boolean equalsIgnoreCase = str2.equalsIgnoreCase(str3); if (equalsIgnoreCase) { b = false; System.out.println("验证码输入正确"); break; } } else if (num > 2)//判断输入次数 { System.out.println("错误次数达到3次!"); c = false;//跳出该循环 } System.out.println("输入错误!剩余次数: " + (3 - num)); } } } }
字母数字混合随机验证码
原创
©著作权归作者所有:来自51CTO博客作者namelin2的原创作品,谢绝转载,否则将追究法律责任
下一篇:listview数据下载后不更新
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
生成验证码-超简单
轻松应对验证挑战:简单验证码的实现方法!
验证码 Java -
随机生成混合验证码(Python)
基于数字、小写字母、大写字母生成有背景、删除线等干扰的验证码图片,生成两种结果:生成文件存储到本地文件目录,或者存储到内存中
python 开发语言 后端 验证码 图片验证码 -
Java-验证码生成(数字+字母)
package util;import ja...
java 验证码 2d i++ 临时文件 -
随机验证码
Python生成随机验证码,需要使用PI
验证码 python json -
uniapp 前端 验证码功能 生成数字字母验证码
uniapp 前端 验证码功能 生成数字字母验证码
验证码 ico Code