for(int i=1;i=a.length();i++)
创新互联从2013年开始,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元昌图做网站,已为上家服务,为昌图各地企业和个人服务,联系电话:13518219792
{
d=a.substring(i-1,i);
if(d.equals("@."))
{
return false;
}
}
这个循环判定完是有@.返回false不对的,用判定"@."是否存在好一些
if(!a.contains("@."))
{
return false;
}
//一般用于帐号(Email)
validator.entity.setRuleEmail("^(\\w|\\.|-|\\+)+@(\\w|-)+(\\.(\\w|-)+)+$");
贴上完整的邮箱验证代码:
/**
* 验证email规则
*
* @param email
* @return
*/
publicbooleanvalidateEmail(String email)
{
return TextUtils.isEmpty(email)? false
:email.matches(entity.ruleEmail);
}
邮箱验证分几种,
最简单的是直接发送验证码:验证码随机产生,可以放到cookie里,限制有效时间就是cookie的存活时间。产生之后和发送邮件一样直接发送到邮箱。当用户验证的时候直接从cookie里拿到验证码进行比较。
还有一种是验证链接。在链接里要放一个验证参数,这个参数包括用户名或用户id,创建时间,验证码。当然都要用某种方法去加密,当用户点击这个链接的时候,根据相应的方法解密获得参数。这个可以放到一张动态表里,表中有验证码和对应的用户名或id。当用户要求验证的时候从数据库中拿到验证码,根据链接中的时间判断是否过期。验证成功后删除本条数据即可。如果链接只能使用一次,那么在根据用户名拿到数据之后不管验证是否成功都要删除数据
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入你要验证的邮箱:");
String mail = sc.next();
//@出现的下标
int atIndex = 0;
//.出现的下标
int fullIndex = 0;
//第一次出现的下标
atIndex = mail.indexOf('@', 0);
//第一次出现的下标
fullIndex = mail.indexOf('.', 0);
//判断@是否出现.后面
if(atIndex = fullIndex) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
//判断@是否只有一个
if(mail.indexOf('@', 0) != mail.lastIndexOf('@')) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
//判断.是否只有一个
if(mail.indexOf('.', 0) != mail.lastIndexOf('.')) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
//判断@前面是否是1到40个字符
if(!(atIndex = 1 atIndex = 40)) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
//判断@前面是否为字母
for (int i = 0; i atIndex; i++) {
if (!((mail.charAt(i) = 'a' mail.charAt(i) = 'z')||(mail.charAt(i) = 'A' mail.charAt(i) = 'Z'))) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
}
//判断@到.是否为只能是1到40个字符
if(!(fullIndex - atIndex - 1 = 1 fullIndex - atIndex - 1 = 40)) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
//判断@到.直接的是否为字母或数字
for (int i = atIndex+1; i fullIndex; i++) {
if (!((mail.charAt(i) = 'a' mail.charAt(i) = 'z')||(mail.charAt(i) = 'A' mail.charAt(i) = 'Z')||(mail.charAt(i)='0'mail.charAt(i)='9'))) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
}
//判断.后面的是2到3长度的字符
if (!(mail.length() - fullIndex - 1 = 2 mail.length() - fullIndex -1 = 3) ){
System.out.println("此邮箱不合法!");
System.exit(0);
}
//判断.后面的是英文字母
for (int i = fullIndex+1; i mail.length(); i++) {
if (!((mail.charAt(i) = 'a' mail.charAt(i) = 'z')||(mail.charAt(i) = 'A' mail.charAt(i) = 'Z'))) {
System.out.println("此邮箱不合法!");
System.exit(0);
}
}
System.out.println("此邮箱是合法的!");
}
}
public class Test{
public static void main(String[] args){
Test t = new Test();
String email = "test@sina.com" ;
boolean isEmail = t.isEmail(email);
if(isEmail){
System.out.println(email +" is a right email!!!");
}else{
System.out.println("error");
}
}
public boolean isEmail(String email){
//正则表达式
/*
String regex = "^[A-Za-z]{1,40}@[A-Za-z0-9]{1,40}\\.[A-Za-z]{2,3}$";
return email.matches(regex);
*/
//不适用正则
if(email==null||"".equals(email)) return false ;
if(!containsOneWord('@',email)||!containsOneWord('.',email)) return false;
String prefix = email.substring(0,email.indexOf("@"));
String middle = email.substring(email.indexOf("@")+1,email.indexOf("."));
String subfix = email.substring(email.indexOf(".")+1);
System.out.println("prefix="+prefix +" middle="+middle+" subfix="+subfix);
if(prefix==null||prefix.length()40||prefix.length()==0) return false ;
if(!isAllWords(prefix)) return false ;
if(middle==null||middle.length()40||middle.length()==0) return false ;
if(!isAllWordsAndNo(middle)) return false ;
if(subfix==null||subfix.length()3||subfix.length()2) return false ;
if(!isAllWords(subfix)) return false ;
return true ;
}
//判断字符串只包含指定的一个字符c
private boolean containsOneWord(char c , String word){
char[] array = word.toCharArray();
int count = 0 ;
for(Character ch : array){
if(c == ch) {
count++;
}
}
return count==1 ;
}
//检查一个字符串是否全部是字母
private boolean isAllWords(String prefix){
char[] array = prefix.toCharArray();
for(Character ch : array){
if(ch'A' || ch'z' || (ch'a' ch'Z')) return false ;
}
return true;
}
//检查一个字符串是否包含字母和数字
private boolean isAllWordsAndNo(String middle){
char[] array = middle.toCharArray();
for(Character ch : array){
if(ch'0' || ch 'z') return false ;
else if(ch '9' ch 'A') return false ;
else if(ch 'Z' ch 'a') return false ;
}
return true ;
}
}
实现原理,实际上就是输入一个字符串,之后通过正则表达式验证此字符串是否符合邮箱的格式规范,通过以下工具类即可:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegisterCheck {
/**
* 验证输入的邮箱格式是否符合
* @param email
* @return 是否合法
*/
public static boolean emailFormat(String email)
{
boolean tag = true;
final String pattern1 = "^([a-z0-9A-Z]+[-|//.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?//.)+[a-zA-Z]{2,}$";
final Pattern pattern = Pattern.compile(pattern1);
final Matcher mat = pattern.matcher(email);
if (!mat.find()) {
tag = false;
}
return tag;
}
}