Java 正则表达式电子邮件验证:为什么我的正则表达式失败?
您遇到了一个特殊问题,即用于电子邮件验证的 Java 正则表达式始终失败,尽管在 Eclipse 中工作正常。这种行为可能令人费解,我们将深入研究解决方案。
提供的正则表达式类似于常用的电子邮件验证模式,其中您的目标是匹配以下结构:大写字母数字字符、下划线、句点或连字符后跟“@”符号,后跟更多字母数字字符、句点或连字符,并以由 2 到 4 个大写字母组成的域组件结尾
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!");
但是,此正则表达式似乎失败,可能是由于电子邮件字符串中的特殊字符被伪装或转义。
使用更全面的正则表达式的解决方案
为了解决这个问题,我们可以使用更强大的电子邮件正则表达式验证:
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(); }
此更新的正则表达式遵循指定的电子邮件结构,但还可以更有效地处理特殊字符。
以上是为什么我的 Java Regex 电子邮件验证失败,尽管它在 Eclipse 中有效?的详细内容。更多信息请关注PHP中文网其他相关文章!