我已经检查了StackOverflow,找不到任何答案可以回答如何在Go Language中验证电子邮件的问题。
经过研究,我根据自己的需要找出了解决方案。
我有这个regex和Go函数,可以正常工作:
import (
"fmt"
"regexp"
)
func main() {
fmt.Println(isEmailValid("[email protected]")) // true
fmt.Println(isEmailValid("[email protected]")) // true -- expected "false"
}
// isEmailValid checks if the email provided is valid by regex.
func isEmailValid(e string) bool {
emailRegex := regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
return emailRegex.MatchString(e)
}
问题是它接受我不需要的特殊字符。我尝试使用其他语言的“ regex”表达式中的某些表达式,但是在调试中抛出了“未知转义”错误。
谁能给我一个很好的正则表达式或任何适用于GoLang的快速解决方案(pkg)?
标准库具有内置的电子邮件解析和验证功能,只需使用:即可mail.ParseAddress()
。
一个简单的“有效”测试:
func valid(email string) bool {
_, err := mail.ParseAddress(email)
return err == nil
}
测试它:
for _, email := range []string{
"[email protected]",
"bad-example",
} {
fmt.Printf("%18s valid: %t\n", email, valid(email))
}
哪些输出(在Go Playground上尝试):
[email protected] valid: true
bad-example valid: false
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句