GoLang E-Mail-Validator
- Verwenden Sie Regex, um einen GoLang-E-Mail-Validator zu erstellen
- Verwenden Sie die Mail-API, um einen GoLang-E-Mail-Validator zu erstellen
- Erstellen Sie eine Methode für einen GoLang-E-Mail-Validator
Dieses Tutorial zeigt, wie Sie eine E-Mail in GoLang validieren.
E-Mails erfordern ein bestimmtes Format; andernfalls funktionieren sie nicht. Aus diesem Grund ist die E-Mail-Validierung beim Aufbau eines E-Mail-Systems von Bedeutung. Dieses Tutorial zeigt verschiedene Methoden zum Validieren einer E-Mail in GoLang.
Verwenden Sie Regex, um einen GoLang-E-Mail-Validator zu erstellen
Der regex
wird verwendet, um verschiedene Formate für verschiedene Programmiersprachen zu validieren. GoLang bietet auch ein Paket regexp
an, um verschiedene Formate zu validieren und kann für die E-Mail-Validierung verwendet werden.
Versuchen wir es an einem Beispiel:
package main
import (
"fmt"
"regexp"
)
func main() {
string1 := "delftstack.123@hotmail.com"
string2 := "demo@delftstack.com"
string3 := "demo@delftstack.tv"
string4 := "demohotmail.com"
string5 := "demo@"
// regex pattern for email ^[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])?)*$
RegexPattern := 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])?)*$")
fmt.Printf("Email 1: %v :%v\n", string1, RegexPattern.MatchString(string1))
fmt.Printf("Email 2: %v :%v\n", string2, RegexPattern.MatchString(string2))
fmt.Printf("Email 3: %v :%v\n", string3, RegexPattern.MatchString(string3))
fmt.Printf("Email 4: %v :%v\n", string4, RegexPattern.MatchString(string4))
fmt.Printf("Email 5: %v :%v\n", string5, RegexPattern.MatchString(string5))
fmt.Printf("\nThe regex email pattern: %v\n", RegexPattern.String())
}
Der obige Code validiert die E-Mail basierend auf dem regulären Ausdruck unter Verwendung des regexp
-Pakets der Go-Sprache. Sehen Sie sich die Ausgabe für den obigen Code an:
Email 1: delftstack.123@hotmail.com :true
Email 2: demo@delftstack.com :true
Email 3: demo@delftstack.tv :true
Email 4: demohotmail.com :false
Email 5: demo@ :false
The regex email pattern: ^[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])?)*$
Verwenden Sie die Mail-API, um einen GoLang-E-Mail-Validator zu erstellen
Die mail
-API von GoLang hat eine Methode mail.ParseAddress
, die für die E-Mail-Validierung verwendet wird. Diese Funktion parst die RFC 5322
-Adresse, und wir können auch prüfen, ob ein String eine E-Mail ist, indem wir das Format name <local-part@domain>
verwenden.
Sehen wir uns an, wie man einen E-Mail-Validator mit der Methode mail.ParseAddress
implementiert:
package main
import (
"fmt"
"net/mail"
)
func EmailValidator(EmailAddress string) (string, bool) {
a, b := mail.ParseAddress(EmailAddress)
if b != nil {
return "", false
}
return a.Address, true
}
var EmailAddresses = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@",
}
func main() {
for _, e_address := range EmailAddresses {
if emailaddress, ok := EmailValidator(e_address); ok {
fmt.Printf("The Input: %-30s Valadity: %-10t Email Address: %s\n", e_address, ok, emailaddress)
} else {
fmt.Printf("The Input: %-30s Valadity: %-10t\n", e_address, ok)
}
}
}
Der obige Code erstellt eine Funktion als EmailValidator
mit der Methode mail.ParseAddress
. Der Code überprüft die Validierung eines Arrays von E-Mails.
Siehe die Ausgabe:
The Input: delftstack.123@hotmail.com Valadity: true Email Address: delftstack.123@hotmail.com
The Input: Delftstack <demo@delftstack.com> Valadity: true Email Address: demo@delftstack.com
The Input: demo@delftstack.tv Valadity: true Email Address: demo@delftstack.tv
The Input: demohotmail.com Valadity: false
The Input: demo@ Valadity: false
Erstellen Sie eine Methode für einen GoLang-E-Mail-Validator
Angenommen, Sie finden den regulären Ausdruck schwierig oder haben Mehrdeutigkeiten beim Laden von Paketen. In diesem Fall können Sie auch eine Methode basierend auf dem GoLang-Code erstellen, um eine E-Mail basierend auf dem Standardformat zu validieren.
Hier ist ein Beispiel:
package main
import (
"fmt"
"strings"
"unicode"
)
func EmailValidator(emailaddress string) bool {
if emailaddress == "" {
return false
}
if CheckSpace(emailaddress) {
return false
}
AttheRate := strings.IndexByte(emailaddress, '@')
if AttheRate == -1 {
return false
}
localPart := emailaddress[:AttheRate]
if localPart == "" {
return false
}
DomainCheck := emailaddress[AttheRate+1:]
if DomainCheck == "" {
return false
}
LastDot := strings.IndexByte(DomainCheck, '.')
if LastDot == -1 || LastDot == 0 || LastDot == len(DomainCheck)-1 {
return false
}
if strings.Index(DomainCheck, "..") != -1 {
return false
}
AfterDot := strings.LastIndexByte(DomainCheck, '.')
return 2 <= len([]rune(DomainCheck[AfterDot+1:]))
}
func CheckSpace(emailaddress string) bool {
for _, a := range emailaddress {
if unicode.IsSpace(a) {
return true
}
}
return false
}
func main() {
string1 := "delftstack.123@hotmail.com"
string2 := "demo@delftstack.com"
string3 := "demo@delftstack.tv"
string4 := "demohotmail.com"
string5 := "demo@"
fmt.Printf("Email 1: %v :%v\n", string1, EmailValidator(string1))
fmt.Printf("Email 2: %v :%v\n", string2, EmailValidator(string2))
fmt.Printf("Email 3: %v :%v\n", string3, EmailValidator(string3))
fmt.Printf("Email 4: %v :%v\n", string4, EmailValidator(string4))
fmt.Printf("Email 5: %v :%v\n", string5, EmailValidator(string5))
}
Der obige Code erstellt eine Methode, die rein auf dem GoLang-Code basiert, um die E-Mail-Validierung zu überprüfen. Sehen wir uns die Ausgabe an:
Email 1: delftstack.123@hotmail.com :true
Email 2: demo@delftstack.com :true
Email 3: demo@delftstack.tv :true
Email 4: demohotmail.com :false
Email 5: demo@ :false
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook