From e750aca9e53d80eb7c2d7ffc3ccdb4e7cf6a7aca Mon Sep 17 00:00:00 2001 From: François Tiercelin Date: Sat, 19 Oct 2024 02:38:56 +0100 Subject: Be more stringent on email validation rules (#1870) * be more stringent on email validation rules add UT to validate various email formats * fix indentation * fix failing UT case * refine regex for email's domain: * only letters in the last part * no part starting or ending with a - (- allowed inside the part) add UT to cover such cases --- .../com/google/zxing/client/result/EmailDoCoMoResultParser.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/com/google/zxing/client/result/EmailDoCoMoResultParser.java b/core/src/main/java/com/google/zxing/client/result/EmailDoCoMoResultParser.java index ab301f42f..49992df26 100644 --- a/core/src/main/java/com/google/zxing/client/result/EmailDoCoMoResultParser.java +++ b/core/src/main/java/com/google/zxing/client/result/EmailDoCoMoResultParser.java @@ -29,8 +29,10 @@ import java.util.regex.Pattern; */ public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser { - private static final Pattern ATEXT_ALPHANUMERIC = Pattern.compile("[a-zA-Z0-9@.!#$%&'*+\\-/=?^_`{|}~]+"); - + private static final String EMAIL_LOCAL = "[^:]+"; + private static final String EMAIL_DOMAIN = "([0-9a-zA-Z]+[0-9a-zA-Z\\-]+[0-9a-zA-Z]+\\.)+[a-zA-Z]{2,}"; + private static final Pattern EMAIL = Pattern.compile("^" + EMAIL_LOCAL + "@" + EMAIL_DOMAIN + "$"); + @Override public EmailAddressParsedResult parse(Result result) { String rawText = getMassagedText(result); @@ -58,7 +60,7 @@ public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser { * in a barcode, not "judge" it. */ static boolean isBasicallyValidEmailAddress(String email) { - return email != null && ATEXT_ALPHANUMERIC.matcher(email).matches() && email.indexOf('@') >= 0; + return email != null && EMAIL.matcher(email).matches(); } } -- cgit v1.2.3