Ü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
Teşekkür ediyorum öncelikle.
Düzenli ifadeler gerçekten büyük kolaylık sağlıyor. Ama ne yazık ki tam olarak kaynak yok. regexone.com vardı ama orada hiçbir ipucu vermiyor. Kendinizi test ediyorsunuz sadece.
Bir gün bu REGEX’i internete bakmadan yazmak isterdim. Aynı şekilde okuyabilmek de :)