You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bs...@apache.org on 2007/10/28 07:09:49 UTC
svn commit: r589273 -
/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
Author: bspeakmon
Date: Sat Oct 27 23:09:48 2007
New Revision: 589273
URL: http://svn.apache.org/viewvc?rev=589273&view=rev
Log:
- VALIDATOR-191: incrementally replacing oro with java.util.regex
Modified:
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java?rev=589273&r1=589272&r2=589273&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java Sat Oct 27 23:09:48 2007
@@ -42,21 +42,20 @@
*/
public class EmailValidator implements Serializable {
- private static final String SPECIAL_CHARS = "\\000-\\037\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]\\177";
+ private static final String SPECIAL_CHARS = "\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]";
private static final String VALID_CHARS = "[^\\s" + SPECIAL_CHARS + "]";
private static final String QUOTED_USER = "(\"[^\"]*\")";
private static final String ATOM = VALID_CHARS + '+';
private static final String WORD = "((" + VALID_CHARS + "|')+|" + QUOTED_USER + ")";
- // Each pattern must be surrounded by /
private static final String LEGAL_ASCII_PATTERN = "^\\p{ASCII}+$";
private static final String EMAIL_PATTERN = "^(.+)@(.+)$";
private static final String IP_DOMAIN_PATTERN = "^\\[(.*)\\]$";
private static final String TLD_PATTERN = "^\\p{Alpha}+$";
- private static final String USER_PATTERN = "/^\\s*" + WORD + "(\\." + WORD + ")*$/";
- private static final String DOMAIN_PATTERN = "/^" + ATOM + "(\\." + ATOM + ")*\\s*$/";
- private static final String ATOM_PATTERN = "/(" + ATOM + ")/";
+ private static final String USER_PATTERN = "^\\s*" + WORD + "(\\." + WORD + ")*$";
+ private static final String DOMAIN_PATTERN = "^" + ATOM + "(\\." + ATOM + ")*\\s*$";
+ private static final String ATOM_PATTERN = "(" + ATOM + ")";
/**
* Singleton instance of this class.
@@ -96,8 +95,8 @@
return false;
}
- email = stripComments(email);
+
// Check the whole email address structure
Pattern emailPattern = Pattern.compile(EMAIL_PATTERN);
Matcher emailMatcher = emailPattern.matcher(email);
@@ -140,8 +139,7 @@
}
} else {
// Domain is symbolic name
- Perl5Util domainMatcher = new Perl5Util();
- symbolic = domainMatcher.match(DOMAIN_PATTERN, domain);
+ symbolic = Pattern.matches(DOMAIN_PATTERN, domain);
}
if (symbolic) {
@@ -161,8 +159,7 @@
* @return true if the user name is valid.
*/
protected boolean isValidUser(String user) {
- Perl5Util userMatcher = new Perl5Util();
- return userMatcher.match(USER_PATTERN, user);
+ return Pattern.matches(USER_PATTERN, user);
}
/**
@@ -174,17 +171,16 @@
String[] domainSegment = new String[10];
boolean match = true;
int i = 0;
- Perl5Util atomMatcher = new Perl5Util();
+
+ // Iterate through the domain, checking that it's composed
+ // of valid atoms in between the dots.
+ // FIXME: This should be cleaned up some more; it's still a bit dodgy.
+ Pattern atomPattern = Pattern.compile(ATOM_PATTERN);
+ Matcher atomMatcher = atomPattern.matcher(domain);
while (match) {
- match = atomMatcher.match(ATOM_PATTERN, domain);
+ match = atomMatcher.find();
if (match) {
domainSegment[i] = atomMatcher.group(1);
- int l = domainSegment[i].length() + 1;
- domain =
- (l >= domain.length())
- ? ""
- : domain.substring(l);
-
i++;
}
}