Scala中逗号分隔电子邮件的验证



我想验证在Scala中用逗号分隔的电子邮件列表。

For Ex:1) a@gmail.com,b@gmail.com,c@gmail.com ---Valid
2) a@gmail.com,b@@gmail.com,c@gmail.com---Invalid
3) a@gmail.com,b@gmail.com.c@gmail.com----Invalid

取决于;无效";意味着,这可以工作:

def isValid(emails: String): Boolean = {
return emails.split(",").map(_.count(_ == '@') == 1).reduce(_ && _)
}
isValid("a@gmail.com,b@gmail.com,c@gmail.com")  // true
isValid("a@gmail.com,b@@gmail.com,c@gmail.com")  // false
isValid("a@gmail.com,b@gmail.com.c@gmail.com")  // false

我只是用逗号分隔字符串,然后检查其中是否只有一个@

如果你真的想检查电子邮件是否正确,你可以使用这样的正则表达式:

def isValid(emails: String): Boolean = {
return emails.split(",").map(_.matches(raw"[w-.]+@([w-]+.)+[w-]{2,4}")).reduce(_ && _)
}

这可能更好,但它还不够具体,无法捕获所有电子邮件的特定性。使用regex匹配所有类型的电子邮件不是一件容易的事情(请参阅此问题(。