You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android邮箱正则验证:如何允许含连字符的邮箱地址

邮箱正则验证适配带连字符域名的修改方案

你的正则表达式无法通过sanjeev@san-szabo.com这类邮箱,问题出在**@符号后的域名匹配规则**:原规则[a-z]+只允许纯字母,没包含连字符-,所以带连字符的域名主体会被判定为无效。

修改要点:

  • 将@后的[a-z]+替换为[a-z0-9-]+,让域名主体支持字母、数字和连字符
  • 额外优化:原正则的\\.+只能匹配单个点,改成(\\.[a-z0-9-]+)+可以支持多级域名(比如san-szabo.co.uk这类格式)

修改后的完整代码:

public static boolean isEmailValid(String email) {
    boolean isValid = false;
    String expression = "^[a-zA-Z0-9+_.-]+@[a-z0-9-]+(\\.[a-z0-9-]+)+";
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);
    if (matcher.matches()) {
        isValid = true;
    }
    return isValid;
}

说明:

  • ^[a-zA-Z0-9+_.-]+:保持原规则,允许邮箱前缀包含字母、数字、加号、下划线、点和连字符
  • @[a-z0-9-]+:匹配带连字符的域名主体(比如san-szabo)
  • (\\.[a-z0-9-]+)+:匹配域名后缀,支持多级格式,且每个后缀部分也允许连字符

内容的提问来源于stack exchange,提问作者MARSH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:45:59