導航:首頁 > 編程語言 > java126郵箱真實性驗證代碼

java126郵箱真實性驗證代碼

發布時間:2024-12-07 22:05:28

❶ 利用java的字元串處理技術,編寫一個驗證Email地址合法性的程序

實現原理,實際上就是輸入一個字元串,之後通過正則表達式驗證此字元串是否符合郵箱的格式規范,通過以下工具類即可:

importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassRegisterCheck{
/**
*驗證輸入的郵箱格式是否符合
*@paramemail
*@return是否合法
*/
(Stringemail)
{
booleantag=true;
finalStringpattern1="^([a-z0-9A-Z]+[-|//.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?//.)+[a-zA-Z]{2,}$";
finalPatternpattern=Pattern.compile(pattern1);
finalMatchermat=pattern.matcher(email);
if(!mat.find()){
tag=false;
}
returntag;
}
}

❷ java :從控制台輸入一個字元串,驗證是不是郵箱實例一個

樓主你沒說清楚合法郵箱的規則呀。下面我自定了一個合法郵箱規則,希望能幫助樓主理解。
代碼如下:
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.nextLine();

/*
設定郵箱地址的合法規則,合法郵箱地址要求如下:
(1)字元必須是英文或數字開始
(2)必須包含一個@
(3)@符號在. 符號前面
(4)以英文或數字結尾

*/
//設置一個正則表達式
String reg = "[\\w]+@[\\w]+.[\\w]+";

//告知此字元串是否匹配給定的正則表達式。
if(mail.matches(reg)) {
System.out.println("郵箱地址合法!");
}
else {
System.out.println("郵箱地址不合法!");
}

}
}

這里主要是採用正則表達式的方式。關於正則表達式,樓主可以查看Pattern類和Matcher類。樓主可以可以到網上查看下相關資料。很快就能理解了。

這里解釋下上面的正則表達式String reg = "[\\w]+@[\\w]+.[\\w]+";
\w 表示單詞字元:[a-zA-Z_0-9],上面是兩個反斜桿是因為反斜桿是轉義字元
+號表示:出現一次或多次 ,所以[\\w]+意思就是一到多個單詞字元(英文或數字)
@ :直接表示@字元
.:表示點字元
綜上所述。
String reg = "[\\w]+@[\\w]+.[\\w]+";的意思就是 :一到多個字元 + @ + 一到多個字元 + 點 + 一到多個字元。
正則表達式使用的好。可以解決很多問題。希望樓主能學好~~

❸ java如何驗證一個email地址是否真實有效。

首先使用java提供的格式類判斷email是否格式有誤,然後使用開源框架,驗證郵箱是否有用,示例如下:

publicstaticbooleancheckEmail(Stringemail){
if(!email.matches("[\w\.\-]+@([\w\-]+\.)+[\w\-]+")){
returnfalse;
}

Stringhost="";
StringhostName=email.split("@")[1];
Record[]result=null;
SMTPClientclient=newSMTPClient();

try{
//查找MX記錄
Lookuplookup=newLookup(hostName,Type.MX);
lookup.run();
if(lookup.getResult()!=Lookup.SUCCESSFUL){
returnfalse;
}else{
result=lookup.getAnswers();
}

//連接到郵箱伺服器
for(inti=0;i<result.length;i++){
host=result[i].getAdditionalName().toString();
client.connect(host);
if(!SMTPReply.isPositiveCompletion(client.getReplyCode())){
client.disconnect();
continue;
}else{
break;
}
}

//以下2項自己填寫快速的,有效的郵箱
client.login("163.com");
client.setSender("[email protected]");
client.addRecipient(email);
if(250==client.getReplyCode()){
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
client.disconnect();
}catch(IOExceptione){
}
}
returnfalse;
}

需要的jar支持:commons-net-2.2.jar,dnsjava-2.1.1.jar

❹ 驗證郵件輸入地址是否有效的 代碼

public class Test{
public static void main(String[] args){
Test t = new Test();
String email = "[email protected]" ;
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 ;
}
}

追問:
能不能說下你的想法 詳細點最好

追答:
JAVA有一個特性 ,封裝!所以首先寫代碼,盡可能考慮到代碼的重用性。
所有首先想到封裝 方法
針對郵箱的驗證,技術可謂很成熟了,首先,正則表達式是處理字元串的一個很強大的工具,
所以第一個想到的應該是如何用正則表達式進行處理
這個需要你去掌握最基本的正則表達式的寫法了!!!

String是Java中最常用的一個類,所以String類中的所有方法,建議樓主最後都掌握。很重要的!

說下思想吧:
一個郵箱,按照你的要求,首先我封裝了一個方法,這個方法用來判斷是否是合法的郵箱。
當然參數就是1個字元串了
1 郵箱有一個@和. 組成 :會考慮到使用 contains,但是這個方法不能保證重復,只是判斷有無,所以不適合。 然後是 indexOf 和lastIndexOf 這兩個方法分別返回首次出現的位置和最後一次出現的位置 ,如果兩個值相同,說明只有一個字元(昨晚手動寫的代碼,忘記了lastIndexOf ),
另一種更原始的方法,就是我寫的containsOneWord 方法,需要toCharArray, 用遍歷每一個字元來比較(推薦使用樓下的 indexOf和lastIndexOf )

2 郵箱 @ 前 @後。前 。後 都有具體的要求 。 所以拆分字元串 substring 和indexOf 配合使用,當然String類還有一個專門處理拆分字元串的類,不過那個類稍微有點復雜 好像是 StringToken什麼吧,忘記了,用過正則後再沒用過了,可以說被正則完全取代了。

3 @前1-40字元,並全是 字母: String 有返回長度的方法 length , 關鍵是如何判斷 一段字元串全是字母了。而這個需求同樣是公用的,可以封裝成函數 。 所以isAllWords 方法就用來處理一個字元串是否全部都是字母組成
字母無非就是 a-z 和A-Z 邏輯判斷下。
這里需要稍微了解點 ASCII 知道 a>z>A>Z >9>0
4 @後 等原理基本差不多了!
總之一句話送給樓主: 把String類的所有方法都掌握,有時間學習下正則表達式,字元串是最常用的一種對象,對他的操作很重要,掌握了字元串的處理,一般情況下問題都很好解決了!

❺ 如何用java檢驗電子郵箱格式的合法性要用到String的方法來判斷

||自己寫邏輯驗證的方式可以做到。我寫了下面的:

public static boolean validateEmail(String email) {
boolean flag = false;
int pos = email.indexOf("@");
if (pos == -1 || pos == 0 || pos == email.length() - 1) {
return false;
}
String[] strings = email.split("@");
if (strings.length != 2) {// 如果郵箱不是xxx@xxx格式
return false;
}
CharSequence cs = strings[0];
for (int i = 0; i < cs.length(); i++) {
char c = cs.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c)) {
return false;
}
}
pos = strings[1].indexOf(".");// 如果@後面沒有.,則是錯誤的郵箱。
if (pos == -1 || pos == 0 || pos == email.length() - 1) {
return false;
}
strings = strings[1].split(".");
for (int j = 0; j < strings.length; j++) {
cs = strings[j];
if (cs.length() == 0) {
return false;
}
for (int i = 0; i < cs.length(); i++) {//如果保護不規則的字元,表示錯誤
char c = cs.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c)) {
return false;
}
}

}
return true;
}

這個效率也不會差很多,不過我推薦matches方法,經過測試的,matches匹配方式運行10000次的時間比上面的時間少了20毫秒。

閱讀全文

與java126郵箱真實性驗證代碼相關的資料

熱點內容
微信h5頁面怎麼修改 瀏覽:931
手機怎麼無法打開視頻文件夾 瀏覽:840
抖音如何上直播網站 瀏覽:887
錄屏截圖大師保存的文件在哪裡 瀏覽:751
紅河谷第二個版本 瀏覽:895
c語言如何讓整型數據的商為小數 瀏覽:863
怎樣下東西不要密碼 瀏覽:320
小米手機拍照後文件名要怎麼設置 瀏覽:429
每年程序員就業形勢 瀏覽:425
安卓手機如何卸載程序 瀏覽:955
相機能用qq不能用 瀏覽:319
win10如何設置成xp配置文件 瀏覽:748
蘋果隔空傳遞以後文件在哪裡 瀏覽:927
打開ps顯示文件名無效 瀏覽:379
做推廣哪個網站靠譜 瀏覽:588
qq飛車如何綁定好友 瀏覽:873
php編程語言在哪裡 瀏覽:302
矢量文件有哪些格式 瀏覽:790
文書檔案長期保存的文件有哪些 瀏覽:945
如何把pdf文字復制粘貼到word文檔 瀏覽:507

友情鏈接