今天偶然需要用到正则,对规则有点不熟悉重温了一下。发现网络上大多数都是对正则的正确性判断,但是都没有提到错误地方如何反馈信息。
举个例子说明我的目的:
都知道邮箱的正确格式是XXXXXX@XXX.XXX (比如这样X......X@qq.com),判断格式正确性的正则表达式网上很多。但是我现在想做的是用户输入错误的信息时候及时给用户提供错误的地方。例如
1.首字母不能为数字和英文字母以外的。
2.账号中只能拥有数字、英文、下划线_、 点.
public static void main(String[] args) throws Exception {
String regex="2!d56@qq.com";//待验证
Pattern p=Pattern.compile("^(\\w[\\w_\\.]{7,19})@([\\w_\\.]+)\\.\\w+");
Matcher m=p.matcher(regex);
if(m.matches()){
System.out.println("验证成功");//格式正确
System.out.println(m.group(1));//@之前的账号
}else{
//不正确的话寻找错误
//1.首字符是w以外的错误
boolean flag=Pattern.compile("^\\w").matcher(regex).find();
if(!flag){
System.out.println("首字母只能是英文字母和数字!");
}
//2.账号中包含非法字符
boolean flag1=Pattern.compile("^\\w[\\w_\\.]+@").matcher(regex).find();
if(!flag1){
System.out.println("账号中含有非法字符");
}
//同理一步步排查账号长度 等等
}
我目前能想到的方法就是逐个判断。如果有更好的方法请务必留言告诉我,谢谢!