gpt4 book ai didi

email - 如何在 Go 中验证电子邮件地址

转载 作者:行者123 更新时间:2023-12-04 05:12:37 25 4
gpt4 key购买 nike

我检查了 StackOverflow 并找不到任何可以回答的问题 如何在 Go 语言中验证电子邮件 .
经过一番研究,我想出了并根据我的需要解决了它。
我有这个 正则表达式 去函数 ,工作正常:

import (
"fmt"
"regexp"
)

func main() {
fmt.Println(isEmailValid("test44@gmail.com")) // true
fmt.Println(isEmailValid("test$@gmail.com")) // 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{
"good@exmaple.com",
"bad-example",
} {
fmt.Printf("%18s valid: %t\n", email, valid(email))
}
哪些输出(在 Go Playground 上试试):
  good@exmaple.com valid: true
bad-example valid: false

关于email - 如何在 Go 中验证电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66624011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com