2016-11-21 141 views
2

所以我的任務是檢查一個電子郵件是否有特定的形式。它必須是[email protected],其中x可以是其他任何東西,但其餘是必須的。檢查一個字符串是否包含正確位置的子字符串

如果剩下的稍有不同,我必須打印該用戶不被接受。我不知道該怎麼做。我寫了沒有代碼,因爲我不知道如何解決這個問題。

+0

嘗試使用正則表達式。 – Pein

+0

可能的重複[如何檢查一個字符串是否包含另一個字符串在Java中不區分大小寫的方式?](http://stackoverflow.com/questions/86780/how-to-check-if-a-string-contains-另一個字符串不區分大小寫in) –

+0

查看[String]的indexOf方法(http://docs.oracle.com/javase/7/docs/api/java/ lang/String.html)類。 –

回答

4

您可以使用正則表達式。

符合您輸入的模式是:^it\w*@uom.edu.gr。所述\w*裝置

零個或多個任何字字符(字母,數字,下劃線)的

如果要例如包括多個符號「」但排除了「@」原因很明顯,你可以換着花樣用[^@]*這意味着

零個或多個任何單個字符不包括「@」的。

因此模式變爲:^it[^@]*@uom.edu.gr

使用任何兩套西裝的您的需求。

示例代碼:

Pattern p = Pattern.compile("^it\\w*@uom.edu.gr"); 
Matcher m = p.matcher("[email protected]"); 
boolean b = m.matches(); 

以上可以按你一直要求擴大,如:

public static void main(String[] args)throws Exception{ 

    String email = "[email protected]"; 

    Pattern p = Pattern.compile("^it\\w*@uom.edu.gr"); 
    Matcher m = p.matcher(email); 
    boolean b = m.matches(); 
    if(b) { 
     System.out.println("Valid email"); 
    } else { 
     System.out.println("Invalid email."); 
    } 

} 
+1

這是該工作的正確解決方案。一個細節,嚴格來說'\ w *'不匹配「任何」,只有a-zA-Z_0-9。這可能已經足夠好了,或者您可能希望接受更多的角色,具體取決於您對電子郵件地址的瞭解。 –

+0

@ OleV.V。你指出它是正確的,一個更好的模式將是:'^ it [^ @] * @ uom.edu.gr' – pleft

1

使用startsWith和的endsWith

String var = "[email protected]"; 
if(var.startsWith("it") && var.endsWith("end.com")){ 
    // your code 
} 
else { 
    // String do not start with it or it does not end end.com 
} 
相關問題