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
+10.7k Golang : Clean formatting/indenting or pretty print JSON result
+5.6k Golang : Calculate pivot points for a cross
+32.5k Golang : Call a function after some delay(time.Sleep and Tick)
+81.4k Golang : How to convert character to ASCII and back
+14.2k Golang : Delete certain files in a directory
+13.6k Golang : Missing Bazaar command
+21.1k Golang : untar or extract tar ball archive example
+7.8k Golang : GMail API create and send draft with simple upload attachment example
+9k Android Studio : Simple input textbox and intercept key example
+4.9k CodeIgniter/PHP : Remove empty lines above RSS or ATOM xml tag
+12.8k Golang : How to check if your program is running in a terminal