Domain Wildcard
This code is a regular expression to check for all e-mails from a specified domain.
func CheckEmailDomain(email string, domains string) bool {
//Verifies email is of standard email format and another format for items that contain a wildcard
reEmailFormat := 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])?)*$")
reWildCardFormat := regexp.MustCompile(`\A\*\.[a-zA-Z0-9]`)
if reEmailFormat.MatchString(email) {
if len(domains) == 0 {
return true
}
domainArray := strings.Fields(strings.TrimSpace(strings.ToLower(strings.Replace(strings.Replace(domains, "@", " ", -1), ",", " ", -1))))
for _, d := range domainArray {
//process if the index of domainArray contains a wildcard
if reWildCardFormat.MatchString(d) {
if strings.HasSuffix(strings.ToLower(email), strings.Replace(d, "*", "", -1)) {
return true
}
}
if strings.HasSuffix(strings.ToLower(email), "@"+d) {
return true
}
}
}
return false
}
Edited by Collin Chew