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

Scala中逗号分隔邮箱列表的验证实现方案

用Scala实现逗号分隔邮箱列表的验证功能

需求说明

需要验证逗号分隔的邮箱列表是否有效,具体示例:

  • 有效列表:a@gmail.com,b@gmail.com,c@gmail.com
  • 无效列表1:a@gmail.com,b@@gmail.com,c@gmail.com(存在格式错误的邮箱)
  • 无效列表2:a@gmail.com,b@gmail.com.c@gmail.com(缺少逗号分隔,单个元素不符合邮箱格式)

实现思路

  1. 将输入的邮箱列表字符串按逗号分割为单个邮箱条目
  2. 对每个条目做去空格和非空检查,排除连续逗号、首尾逗号产生的空元素
  3. 使用正则表达式验证单个邮箱的格式是否符合标准

代码实现

邮箱验证工具类

object EmailListValidator {
  // 覆盖常见邮箱格式的正则表达式
  private val emailRegex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$".r

  /**
   * 验证逗号分隔的邮箱列表有效性
   * @param emailList 逗号分隔的邮箱字符串
   * @return 验证结果,true为有效,false为无效
   */
  def isValid(emailList: String): Boolean = {
    val emails = emailList.split(",").map(_.trim).filter(_.nonEmpty)
    emails.forall(emailRegex.matches(_))
  }
}

测试示例

object EmailValidationTest extends App {
  // 有效案例
  println(EmailListValidator.isValid("a@gmail.com,b@gmail.com,c@gmail.com")) // 输出: true
  // 无效案例1:含格式错误的邮箱
  println(EmailListValidator.isValid("a@gmail.com,b@@gmail.com,c@gmail.com")) // 输出: false
  // 无效案例2:缺少逗号分隔的错误格式
  println(EmailListValidator.isValid("a@gmail.com,b@gmail.com.c@gmail.com")) // 输出: false
  // 额外测试:兼容连续逗号
  println(EmailListValidator.isValid("a@gmail.com,,b@gmail.com")) // 输出: true
  // 额外测试:兼容首尾逗号
  println(EmailListValidator.isValid(",a@gmail.com,b@gmail.com,")) // 输出: true
}

补充说明

  • 正则表达式支持用户名包含字母、数字及._%+-特殊符号,域名部分支持多级域名(如mail.example.com)
  • 分割后自动去除邮箱前后空格,兼容用户输入时的格式不规范情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:31:26