我需要從電子郵件地址獲取域,問題是同一電子郵件包含名稱name < email >,我當前的代碼是:var ( ErrBadFormat = errors.New("invalid format") emailRegexp = 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])?)*$"))func GetFromDomain(email string) string { if !emailRegexp.MatchString(email) { fmt.Println("Error %FROMDOMAIN ", email) return "localhost" } i := strings.LastIndexByte(email, '@') return email[i+1:]}這樣做的最佳做法是什么?當電子郵件包含名稱時,我使用 LastIndexByte 的方法返回錯誤。我該如何解決這個問題?
1 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
最好的辦法是使用適當的電子郵件解析庫,例如標準庫的mail.ParseAddress
方法。
從那里,您可以輕松地從地址中提取域名,方法是拆分@
-- 但要小心!@
在電子郵件地址的用戶名部分(即"foo@bar"@example.com
)使用引號或轉義符實際上是合法的,因此您必須在最后?@
一個.
- 1 回答
- 0 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消