for(int i=1;i=a.length();i++)
創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元昌圖做網(wǎng)站,已為上家服務(wù),為昌圖各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
{
d=a.substring(i-1,i);
if(d.equals("@."))
{
return false;
}
}
這個循環(huán)判定完是有@.返回false不對的,用判定"@."是否存在好一些
if(!a.contains("@."))
{
return false;
}
//一般用于帳號(Email)
validator.entity.setRuleEmail("^(\\w|\\.|-|\\+)+@(\\w|-)+(\\.(\\w|-)+)+$");
貼上完整的郵箱驗證代碼:
/**
* 驗證email規(guī)則
*
* @param email
* @return
*/
publicbooleanvalidateEmail(String email)
{
return TextUtils.isEmpty(email)? false
:email.matches(entity.ruleEmail);
}
郵箱驗證分幾種,
最簡單的是直接發(fā)送驗證碼:驗證碼隨機產(chǎn)生,可以放到cookie里,限制有效時間就是cookie的存活時間。產(chǎn)生之后和發(fā)送郵件一樣直接發(fā)送到郵箱。當用戶驗證的時候直接從cookie里拿到驗證碼進行比較。
還有一種是驗證鏈接。在鏈接里要放一個驗證參數(shù),這個參數(shù)包括用戶名或用戶id,創(chuàng)建時間,驗證碼。當然都要用某種方法去加密,當用戶點擊這個鏈接的時候,根據(jù)相應(yīng)的方法解密獲得參數(shù)。這個可以放到一張動態(tài)表里,表中有驗證碼和對應(yīng)的用戶名或id。當用戶要求驗證的時候從數(shù)據(jù)庫中拿到驗證碼,根據(jù)鏈接中的時間判斷是否過期。驗證成功后刪除本條數(shù)據(jù)即可。如果鏈接只能使用一次,那么在根據(jù)用戶名拿到數(shù)據(jù)之后不管驗證是否成功都要刪除數(shù)據(jù)
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();
//@出現(xiàn)的下標
int?atIndex?=?0;
//.出現(xiàn)的下標
int?fullIndex?=?0;
//第一次出現(xiàn)的下標
atIndex?=?mail.indexOf('@',?0);
//第一次出現(xiàn)的下標
fullIndex?=?mail.indexOf('.',?0);
//判斷@是否出現(xiàn).后面
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);
}
//判斷@到.直接的是否為字母或數(shù)字
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;
}
//檢查一個字符串是否包含字母和數(shù)字
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 ;
}
}
實現(xiàn)原理,實際上就是輸入一個字符串,之后通過正則表達式驗證此字符串是否符合郵箱的格式規(guī)范,通過以下工具類即可:
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;?
}?
}