31 lines
724 B
Go
31 lines
724 B
Go
package address
|
|
|
|
import (
|
|
"net/mail"
|
|
"strings"
|
|
)
|
|
|
|
// IsValidEmailAddress 检查是否是有效的邮箱地址
|
|
func IsValidEmailAddress(str string) bool {
|
|
parsed, err := mail.ParseAddress(str)
|
|
if err != nil || parsed.Address != str {
|
|
return false
|
|
}
|
|
|
|
separator := strings.LastIndexByte(str, '@')
|
|
if separator <= 0 || separator == len(str)-1 {
|
|
return false
|
|
}
|
|
|
|
localPart := str[:separator]
|
|
domain := str[separator+1:]
|
|
if strings.Contains(localPart, "..") || strings.HasPrefix(localPart, ".") || strings.HasSuffix(localPart, ".") {
|
|
return false
|
|
}
|
|
if strings.Contains(domain, "..") || strings.HasPrefix(domain, ".") || strings.HasSuffix(domain, ".") {
|
|
return false
|
|
}
|
|
|
|
return strings.Contains(domain, ".")
|
|
}
|