# String auf E-Mail überprüfen



## java_magnet (13. Nov 2009)

Hallo,

hat oder kennt jemand eine Methode, um zu überprüfen, ob ein String eine EMail Adresse sein kann?

Ich baue Servletanwendungen und habe das bisher immer auf dem Client mit Javascript gemacht. Nun versuche ich mich an Struts2 und möchte die elegante Fehlerausgabe davon nutzen. Daher will ich die Eingaben nun nur noch im Javacode validieren.

Wer hat Erfahung damit? Nutzt ihr lediglich ein Regulären Ausdruck, der auf xxx@xxx.xx überprüft?

mfg
magnet


----------



## eRaaaa (13. Nov 2009)

naja, sowas kann man entweder total kompliziert machen (nach rfc etc.: z.b.: How to Find or Validate an Email Address) oder man nimmts nicht ganz so genau:

[java=]
/*
* Checks for invalid characters
* in email addresses
*/
public class EmailValidation {
   public static void main(String[] args) 
                                 throws Exception {

      String input = "@sun.com";
      //Checks for email addresses starting with
      //inappropriate symbols like dots or @ signs.
      Pattern p = Pattern.compile("^\\.|^\\@");
      Matcher m = p.matcher(input);
      if (m.find())
         System.err.println("Email addresses don't start" +
                            " with dots or @ signs.");
      //Checks for email addresses that start with
      //www. and prints a message if it does.
      p = Pattern.compile("^www\\.");
      m = p.matcher(input);
      if (m.find()) {
        System.out.println("Email addresses don't start" +
                " with \"www.\", only web pages do.");
      }
      p = Pattern.compile("[^A-Za-z0-9\\.\\@_\\-~#]+");
      m = p.matcher(input);
      StringBuffer sb = new StringBuffer();
      boolean result = m.find();
      boolean deletedIllegalChars = false;

      while(result) {
         deletedIllegalChars = true;
         m.appendReplacement(sb, "");
         result = m.find();
      }

      // Add the last segment of input to the new String
      m.appendTail(sb);

      input = sb.toString();

      if (deletedIllegalChars) {
         System.out.println("It contained incorrect characters" +
                           " , such as spaces or commas.");
      }
   }
}
[/code]
http://java.sun.com/developer/technicalArticles/releases/1.4regex/


----------



## Der Müde Joe (13. Nov 2009)

Validator - Commons Validator

hat einen validator. Irgendwo hat ich auch einen regEx rumliegen, nur wo? Ich würde meist eher positiv testen, sprich nicht zu streng zu sein. Ist nun ein ä erlaubt? Nach RFC 5322 (oder so) glaub nicht, aber nach extension glaub schon, drum nie zu streng sein.


----------



## JohannisderKaeufer (13. Nov 2009)

auch eine emailadresse kann mit www. anfangen

www.schaudichschl@u.de

kann jederzeit eingerichtet werden und sollte daher valid sein.

Ja. Es gibt mitlerweile de domains mit einem Buchstaben. Es wird mit sicherheit noch unzählige Validatoren im Einsatz geben, die das noch nicht mitbekommen haben.

Und das www. stört wirklich nicht.

Gut web.de hat was dagegen aber das ist deren ihr problem.

Selbst Leerzeichen sind kein Problem, wenn man wikipedia zitieren darf.

E-Mail-Adresse ? Wikipedia

Selbst die Forensoftware kennt den unterschied zwischen einer url und einer email addresse nicht.


----------



## faetzminator (14. Nov 2009)

Was ist an 
	
	
	
	





```
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
```
 nicht ok  ?


----------

