>  기사  >  백엔드 개발  >  golang에서 정규식을 사용하여 URL 주소가 7단계 도메인 이름인지 확인하는 방법

golang에서 정규식을 사용하여 URL 주소가 7단계 도메인 이름인지 확인하는 방법

PHPz
PHPz원래의
2023-06-24 20:49:361464검색

정규식을 사용하여 URL 주소가 7단계 도메인 이름인지 확인하는 것은 golang에서 매우 일반적인 작업입니다. 이 글에서는 golang에서 정규식을 사용하여 URL 주소가 7단계 도메인 이름인지 확인하는 방법을 소개합니다.

우선 7급 도메인 이름이 무엇인지 이해해야 합니다. 인터넷에서 도메인 이름은 IP 주소 집합과 해당 관계를 식별하는 문자열입니다. 그 중 최상위 도메인 이름은 .com, .cn 등과 같은 최상위 도메인 이름입니다. 최상위 도메인 이름 아래에는 baidu.com, google.cn 등과 같은 두 번째 수준 도메인 이름이 있습니다. 마찬가지로 7급 도메인 이름은 최상위 도메인 이름 아래의 7급 도메인 이름(예: blog.baidu.com,maps.google.cn 등)을 의미합니다.

다음으로 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단계 도메인 이름과 일치할 수 있습니다.

마지막으로 위의 두 단계를 결합하면 됩니다. 구체적인 코드는 다음과 같습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.