Üzerinde çalıştığım bir Android projesinde EditText alanına girilen e-mail değerinin gerçekten de bir e-mail adresi mi olduğunun kontrol edilmesi gerekiyordu. Bunun için aşağıdaki kodu bulup kullandım.
boolean isEmailValid(String email) {
String expression = "^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
return matcher.matches();
}
Girilen tüm değerleri doğru test ediyor mu bilemem ama benim işimi görecek kadar iyi çalışıyor. Aşağıdaki kod bloğu ile test ettiğimde;
ArrayList addresses = new ArrayList();
addresses.add(" ");
addresses.add("test");
addresses.add("test.com");
addresses.add("test@com");
addresses.add("test@test.com");
addresses.add("test@test.com.");
addresses.add("test@test.com.tr");
addresses.add("test.test@test.com.tr");
addresses.add("test@türkçe.karakter.tr");
for (int i = 0; i < addresses.size(); i++) {
System.out.println(addresses.get(i) + " :: "
+ isEmailValid(addresses.get(i)));
}
şu aşağıdaki çıktıyı verdi:
:: false
test :: false
test.com :: false
test@com :: false
test@test.com :: true
test@test.com. :: false
test@test.com.tr :: true
test.test@test.com.tr :: true
test@türkçe.karakter.tr :: false
Yeniden anlamış olduk ki regular expressions hayat kurtarır :)
Kaynak: zparacha.com