[Java lista] Pattern.compile bug (jdk 1.5)

Tamás Magyar magyusz at gmail.com
2008. Már. 4., K, 13:31:58 CET


> Akkor meg sosem validaltal emailcimet a szabvany szerint.:)

Hat igen, ez sem kicsi pattern, ha osszeadogatod talan meg tobb is,
mint 600 karakter, megis gyorsan fut:

  //$Id: EmailValidator.java 11282 2007-03-14 22:05:59Z epbernard $
  //package org.hibernate.validator;
  private static String ATOM =
"[^\\x00-\\x1F^\\(^\\)^\\<^\\>^\\@^\\,^\\(;^\\:^\\\\^\\\"^\\.^\\[^\\]^\\s]";
	private static String DOMAIN = "(" + ATOM + "+(\\." + ATOM + "+)*";
	private static String IP_DOMAIN =
"\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]";

	private java.util.regex.Pattern pattern;

	public boolean isValidEmail(String email) {
		if ( email == null ) return false;
	    if ( email.length() == 0 ) return false;
	    Matcher m = pattern.matcher( email );
		return m.matches();
	}

	private void initializeEmailPatterns() {
		pattern = java.util.regex.Pattern.compile(
				"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*$",
				java.util.regex.Pattern.CASE_INSENSITIVE
		);
		pattern = java.util.regex.Pattern.compile(
				"^" + ATOM + "+(\\." + ATOM + "+)*@"
						 + DOMAIN
						 + "|"
						 + IP_DOMAIN
						 + ")$",
				java.util.regex.Pattern.CASE_INSENSITIVE
		);
	}


További információk a(z) Javalist levelezőlistáról