summaryrefslogtreecommitdiff
path: root/core/src/main/java
diff options
context:
space:
mode:
authorFrançois Tiercelin <francois.tiercelin@hpe.com>2024-10-19 04:38:56 +0300
committerGitHub <noreply@github.com>2024-10-19 04:38:56 +0300
commite750aca9e53d80eb7c2d7ffc3ccdb4e7cf6a7aca (patch)
tree24cbce5ceeacd2fc4871b3830eb879c06049f695 /core/src/main/java
parent9598db91c753293e61d13f6405a4b9e8dfcf6843 (diff)
downloadzxing-e750aca9e53d80eb7c2d7ffc3ccdb4e7cf6a7aca.tar.xz
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
Diffstat (limited to 'core/src/main/java')
-rw-r--r--core/src/main/java/com/google/zxing/client/result/EmailDoCoMoResultParser.java8
1 files changed, 5 insertions, 3 deletions
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();
}
}