可以使用正则表达式来判断一个字符串是否是域名。以下是一个示例代码:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    domain := "www.example.com"
    if isDomain(domain) {
        fmt.Printf("%s is a domain\n", domain)
    } else {
        fmt.Printf("%s is not a domain\n", domain)
    }

    notDomain := "example"
    if isDomain(notDomain) {
        fmt.Printf("%s is a domain\n", notDomain)
    } else {
        fmt.Printf("%s is not a domain\n", notDomain)
    }
}

func isDomain(s string) bool {
    // 匹配域名的正则表达式
    pattern := `^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$`
    r := regexp.MustCompile(pattern)
    return r.MatchString(s)
}

运行结果:

www.example.com is a domain
example is not a domain

在上面的示例代码中,使用了正则表达式 ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$ 来匹配域名。该正则表达式的含义是:

  • ^ 表示字符串的开头
  • ([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+ 表示一个或多个由字母、数字、连字符(-)组成的子域名,每个子域名之间用点号(.)分隔。其中,每个子域名的长度不能超过 63 个字符,且不能以连字符(-)开头或结尾。
  • [a-zA-Z]{2,} 表示顶级域名,由两个或多个字母组成。

如果要判断一个字符串是否是合法的 URL,可以使用 Go 标准库中的 net/url 包。例如:

package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlString := "https://www.example.com/path?query=string"
    u, err := url.Parse(urlString)
    if err != nil {
        fmt.Printf("%s is not a valid URL\n", urlString)
        return
    }
    if u.Scheme == "" || u.Host == "" {
        fmt.Printf("%s is not a valid URL\n", urlString)
        return
    }
    fmt.Printf("%s is a valid URL\n", urlString)
}

运行结果:

https://www.example.com/path?query=string is a valid URL
``
golang判断字符串是域名

原文地址: https://www.cveoy.top/t/topic/cSJl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录