Golang : Validate hostname
Problem :
You need to validate if a given string is a valid hostname or not. Hostnames such as :
www.socketloop.com
socketloop.com
google.com
digitalocean.com
Solution :
Use regexp.Compile
function to validate the string.
For example :
package main
import (
"fmt"
"regexp"
"strings"
)
func validHost(host string) bool {
host = strings.Trim(host, " ")
re, _ := regexp.Compile(`^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$`)
if re.MatchString(host) {
return true
}
return false
}
func main() {
host1 := "socketloop.com"
vHost := validHost(host1)
fmt.Printf("%s is a valid hostname : %v \n", host1, vHost)
host2 := "socketloop_com"
vHost2 := validHost(host2)
fmt.Printf("%s is a valid hostname : %v \n", host2, vHost2)
host3 := "socketloop/com"
vHost3 := validHost(host3)
fmt.Printf("%s is a valid hostname : %v \n", host3, vHost3)
host4 := "www.socketloop.com"
vHost4 := validHost(host4)
fmt.Printf("%s is a valid hostname : %v \n", host4, vHost4)
}
Output :
socketloop.com is a valid hostname : true
socketloop_com is a valid hostname : false
socketloop/com is a valid hostname : false
www.socketloop.com is a valid hostname : true
See also : Golang : Validate IP address
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+3.5k Java : Generate multiplication table example
+11.5k Golang : How to calculate the distance between two coordinates using Haversine formula
+29.6k error: trying to remove "yum", which is protected
+9.7k Golang : Sieve of Eratosthenes algorithm
+25.1k Golang : Encrypt and decrypt data with AES crypto
+11.4k Golang : HTTP response JSON encoded data
+4.6k PHP : Convert string to timestamp or datestamp before storing to database(MariaDB/MySQL)
+11k Android Studio : Highlight ImageButton when pressed on example
+4.6k PHP : Convert CSV to JSON with YQL example
+3.7k Chrome : How to block socketloop.com links in Google SERP?
+3.8k Linux/MacOSX : How to symlink a file?
+14.1k Golang : How do I get the local IP (non-loopback) address ?