Java Regex Email Validation: Why Is My Regex Failing?
You are encountering a peculiar issue where your Java regex for email validation consistently fails, despite working correctly in Eclipse. This behavior can be puzzling, and we will delve into the solution.
The provided regex is similar to commonly used email validation patterns, wherein you aim to match the following structure: uppercase alphanumeric characters, underscores, periods, or hyphens followed by an "@" symbol, followed by more alphanumeric characters, periods, or hyphens, and ending with a domain component composed of 2 to 4 uppercase letters.
Pattern p = Pattern.compile("\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"); Matcher m = p.matcher("[email protected]"); if (m.find()) System.out.println("Correct!");
However, this regex seems to be failing, potentially due to special characters within the email string being disguised or escaped.
A Solution Using a More Comprehensive Regexp
To address this, we can utilize a more robust regex for email validation:
public static final Pattern VALID_EMAIL_ADDRESS_REGEX = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); public static boolean validate(String emailStr) { Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr); return matcher.matches(); }
This updated regex adheres to the specified email structure, but additionally handles special characters more effectively.
The above is the detailed content of Why Is My Java Regex Email Validation Failing, Even Though It Works in Eclipse?. For more information, please follow other related articles on the PHP Chinese website!