ホームページ >バックエンド開発 >Golang >golang で正規表現を使用して URL アドレスが第 7 レベルのドメイン名であるかどうかを確認する方法

golang で正規表現を使用して URL アドレスが第 7 レベルのドメイン名であるかどうかを確認する方法

PHPz
PHPzオリジナル
2023-06-24 20:49:361505ブラウズ

正規表現を使用して URL アドレスが第 7 レベルのドメイン名であるかどうかを確認することは、golang では非常に一般的なタスクです。この記事では、golang で正規表現を使用して URL アドレスが第 7 レベル ドメイン名であるかどうかを確認する方法を紹介します。

まず、第 7 レベルのドメイン名とは何かを理解する必要があります。インターネットでは、ドメイン名は、一連の IP アドレスとそれらの対応関係を識別する文字列です。このうち、トップレベルドメイン名とは、.com、.cnなどの最上位のドメイン名です。トップレベル ドメイン名の下には、baidu.com、google.cn などの第 2 レベル ドメイン名があります。同様に、第 7 レベル ドメイン名は、blog.baidu.com、maps.google.cn など、トップレベル ドメイン名の下にある第 7 レベル ドメイン名を指します。

次に、golang の正規表現を使用して、URL アドレスが第 7 レベル ドメイン名であるかどうかを確認します。

まず、URL アドレスをプロトコル、ホスト名、パスなどのさまざまな部分に分解する必要があります。これは、golang の net/url ライブラリを通じて実現できます。具体的なコードは次のとおりです。

import (
    "fmt"
    "net/url"
)

func main() {
    rawurl := "https://blog.baid.com/path/to/resource"
    parsedUrl, err := url.Parse(rawurl)
    if err != nil {
        fmt.Printf("Parsing URL failed: %s
", err.Error())
        return
    }

    fmt.Println(parsedUrl.Scheme)     // 输出 "https"
    fmt.Println(parsedUrl.Hostname()) // 输出 "blog.baid.com"
    fmt.Println(parsedUrl.Path)       // 输出 "/path/to/resource"
}

ホスト名を分解した後、ホスト名に対して正規表現検証を実行する必要があります。これを実現するには、golang の正規表現ライブラリ regexp を使用します。具体的なコードは次のとおりです。

import (
    "fmt"
    "regexp"
)

func main() {
    hostname := "blog.baid.com" // 从上一步获取
    sevenLevelDomain := `^([a-zA-Z0-9][-a-zA-Z0-9]{0,61}[a-zA-Z0-9].)+([a-zA-Z]{2,})$`

    matched, err := regexp.MatchString(sevenLevelDomain, hostname)
    if err != nil {
        fmt.Printf("Regex validation failed: %s
", err.Error())
        return
    }

    if matched {
        fmt.Println("This is a valid seven-level domain.")
    } else {
        fmt.Println("This is NOT a valid seven-level domain.")
    }
}

このコードでは、第 7 レベルのドメイン名の形式と一致させるために使用される正規表現文字列 sevenLevelDomain を定義します。この正規表現の意味は、文字または数字で始まり、文字、数字、および「-」で構成される長さ 1 ~ 61 の文字列で、文字または数字で終わり、「.」で区切られ、最後にドメイン名で終わります。文字で終わる。この正規表現は、「blog.baid.com」や「news.sports.cnn.com」などの第 7 レベルのドメイン名と一致します。

最後に、上記の 2 つの手順を組み合わせるだけです。具体的なコードは次のとおりです。

import (
    "fmt"
    "net/url"
    "regexp"
)

func main() {
    rawurl := "https://blog.baid.com/path/to/resource"

    parsedUrl, err := url.Parse(rawurl)
    if err != nil {
        fmt.Printf("Parsing URL failed: %s
", err.Error())
        return
    }

    sevenLevelDomain := `^([a-zA-Z0-9][-a-zA-Z0-9]{0,61}[a-zA-Z0-9].)+([a-zA-Z]{2,})$`
    matched, err := regexp.MatchString(sevenLevelDomain, parsedUrl.Hostname())
    if err != nil {
        fmt.Printf("Regex validation failed: %s
", err.Error())
        return
    }

    if matched {
        fmt.Printf("%s is a valid seven-level domain.
", parsedUrl.Hostname())
    } else {
        fmt.Printf("%s is NOT a valid seven-level domain.
", parsedUrl.Hostname())
    }
}

これまでのところ、正規表現と golang の net/url ライブラリを使用して、URL アドレスが第 7 レベルのドメイン名であるかどうかを確認することができました。上記のコードを学ぶことで、読者は golang における正規表現の使用と URL アドレスの処理についてより深く理解できると思います。

以上がgolang で正規表現を使用して URL アドレスが第 7 レベルのドメイン名であるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。