Validador de correo electrónico de GoLang
- Use Regex para crear un validador de correo electrónico de GoLang
- Utilice la API de correo para crear un validador de correo electrónico de GoLang
- Crear un método para un validador de correo electrónico de GoLang
Este tutorial demuestra cómo validar un correo electrónico en GoLang.
Los correos electrónicos requieren un formato particular; de lo contrario, no funcionarán. Es por eso que la validación de correo electrónico es importante al construir un sistema de correo electrónico. Este tutorial demuestra diferentes métodos para validar un correo electrónico en GoLang.
Use Regex para crear un validador de correo electrónico de GoLang
El regex
se usa para validar diferentes formatos para diferentes lenguajes de programación. GoLang también proporciona un paquete regexp
para validar diferentes formatos y puede usarse para la validación de correo electrónico.
Probemos un ejemplo:
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())
}
El código anterior validará el correo electrónico en función de la expresión regular utilizando el paquete regexp
del lenguaje Go. Vea la salida para el código anterior:
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])?)*$
Utilice la API de correo para crear un validador de correo electrónico de GoLang
La API de correo
de GoLang tiene un método mail.ParseAddress
utilizado para la validación de correo electrónico. Esta función analiza la dirección RFC 5322
, y también podemos verificar si una cadena es un correo electrónico utilizando el formato nombre <local-part@domain>
.
Veamos cómo implementar un validador de correo electrónico utilizando el método mail.ParseAddress
:
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)
}
}
}
El código anterior crea una función como EmailValidator
utilizando el método mail.ParseAddress
. El código comprueba la validación de una serie de correos electrónicos.
Ver la salida:
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
Crear un método para un validador de correo electrónico de GoLang
Suponga que encuentra difícil la expresión regular o tiene ambigüedad al cargar paquetes. En ese caso, también puede crear un método basado en el código GoLang para validar un correo electrónico según el formato estándar.
Aquí hay un ejemplo:
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))
}
El código anterior crea un método basado puramente en el código GoLang para verificar la validación del correo electrónico. Veamos la salida:
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