How to tell if a random string is an email address or something else
- Try the below code, this may be helpful to you.
public class EmailCheck {
public static void main(String[] args){
String email = "[email protected]";
Pattern pattern = Pattern.compile("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}");
Matcher mat = pattern.matcher(email);
if(mat.matches()){
System.out.println("Valid email address");
}else{
System.out.println("Not a valid email address");
}
}
}
- Also take a look at this site, which shows another deeper validation using regular expression
. Deeper validation using regular expression
You can use following for verifying an email;
String email ="[email protected]"
Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
Matcher m = p.matcher(email);
boolean matchFound = m.matches();
if (matchFound) {
//your work here
}
Thanks to @Dukeling
private static toLowerCaseIfEmail(String string) {
try {
new InternetAddress(string, true);
} catch (AddressException e) {
return string;
}
if (string.trim().endsWith("]")) {
return string;
}
int lastAt = string.lastIndexOf('@');
if (lastAt == -1) {
return string;
}
return string.substring(0,lastAt)+string.substring(lastAt).toLowerCase();
}
should, from what I can tell, do the required thing.
Update
Since the previous one ignored the possibility of (comment)
syntax after the last @
... which lets face it, if we see them should just bail out fast and return the string unmodified
private static toLowerCaseIfEmail(String string) {
try {
new InternetAddress(string, true);
} catch (AddressException e) {
return string;
}
int lastAt = string.lastIndexOf('@');
if (lastAt == -1
|| string.lastIndexOf(']') > lastAt
|| string.lastIndexOf(')' > lastAt) {
return string;
}
return string.substring(0,lastAt)+string.substring(lastAt).toLowerCase();
}