Golang验证邮箱格式的正则表达式
在Golang中如何用正则表达式验证邮箱格式?我尝试了几个正则表达式但都不太完善,有些常见的邮箱格式无法正确匹配。请问有没有一个比较全面且经过验证的正则表达式可以推荐?最好能支持常见的邮箱格式如带点、加号等特殊符号的情况。
2 回复
在Golang中验证邮箱格式可以使用正则表达式。以下是一个常用的正则表达式和示例代码:
package main
import (
"fmt"
"regexp"
)
func isValidEmail(email string) bool {
// 邮箱验证正则表达式
pattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
matched, _ := regexp.MatchString(pattern, email)
return matched
}
func main() {
emails := []string{
"test@example.com",
"invalid.email",
"user@domain.co.uk",
"name@sub.domain.com",
}
for _, email := range emails {
fmt.Printf("%s: %t\n", email, isValidEmail(email))
}
}
输出结果:
test@example.com: true
invalid.email: false
user@domain.co.uk: true
name@sub.domain.com: true
正则表达式说明:
^和$分别表示字符串的开始和结束[a-zA-Z0-9._%+-]+匹配用户名部分(字母、数字、点、下划线、百分号等)@匹配@符号[a-zA-Z0-9.-]+匹配域名部分\.匹配点号[a-zA-Z]{2,}匹配顶级域名(至少2个字母)
这个正则表达式能够验证大多数常见的邮箱格式,但请注意:
- 完全符合RFC标准的邮箱验证非常复杂
- 实际应用中可能需要根据具体需求调整
- 建议配合其他验证方式(如发送验证邮件)使用
如果需要更严格的验证,可以考虑使用专门的验证库,如 github.com/asaskevich/govalidator。


