发表于: 2021-04-01 23:50:40
1 1217
今天完成的事情:
学习正则
Java实现有效时间短信验证码
明天计划的事情:
邮箱接口
图片接口
遇到的问题:
使用正则表达式无法面面俱到,换号段需要更改
收获:
参考网址:https://www.runoob.com/java/java-regular-expressions.html
1.java中使用正则表达式
首先 创建一个pattern对象,对正则表达式进行编译
然后 调用pattern类的match方法,进行对比操作
用于验证电话号码的表达式
@Test
public void RETest() {
String a = "15940237561";
String regex = "0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}|13[0-9]\\d{8}|15[1089]\\d{8}";
System.out.println(a.matches(regex));
}
2.Java实现有效时间短信验证码
逻辑为将生成的验证码放入redis中,设定过期时间,
在注册时调用redis中验证码进行比对即可
// 获取短信验证码
@RequestMapping(value = "/regCode", method = RequestMethod.POST)
public ModelAndView regCode(@RequestParam String phoneNum) {
ModelAndView modelAndView = new ModelAndView("phoneCode");
String regex = "0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}|13[0-9]\\d{8}|15[1089]\\d{8}";
if (phoneNum.matches(regex)) {
ModelAndView login=new ModelAndView("loginpage");
TenxunMessageUtil.sendMesg(phoneNum);
String regCode = TenxunMessageUtil.getRegCode();
//将验证码添加如redis缓存
RedisUtils.opsForValue().set(phoneNum,regCode,1,TimeUnit.MINUTES);
login.addObject("phoneNum",phoneNum);
login.addObject("regCode",regCode+"请在1分钟内使用");
return login;
}
modelAndView.addObject("phoneResult","手机账号有问题");
return modelAndView;
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView insertStudent(String username, String password,String phoneNum,String regCode ) throws Exception {
ModelAndView modelAndView = new ModelAndView("loginpage");
if (userService.selectUserName(username) != null) {
modelAndView.setViewName("loginpage");
modelAndView.addObject("result", "用户名已存在");
return modelAndView;
} else {
if( regCode.equals(RedisUtils.opsForValue().get(phoneNum))) {
User user = new User();
long t = System.currentTimeMillis();
user.setUsername(username);
user.setPassword(PasswordUtil.generate(password));
user.setCreateAt(t);
user.setUpdateAt(t);
modelAndView.setViewName("regsuccess");
return modelAndView;
}
modelAndView.addObject("result","验证码错误或失效");
return modelAndView;
}
}
评论