GoLang E-Mail-Validator

Sheeraz Gul 20 Juni 2023
  1. Verwenden Sie Regex, um einen GoLang-E-Mail-Validator zu erstellen
  2. Verwenden Sie die Mail-API, um einen GoLang-E-Mail-Validator zu erstellen
  3. Erstellen Sie eine Methode für einen GoLang-E-Mail-Validator
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 Gul avatar Sheeraz Gul avatar

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