>  기사  >  백엔드 개발  >  바둑언어 정규표현 ​​스킬 : 휴대폰 번호의 통신사 매칭 방법

바둑언어 정규표현 ​​스킬 : 휴대폰 번호의 통신사 매칭 방법

WBOY
WBOY원래의
2023-07-12 20:19:55975검색

Go 언어 정규식 기술: 휴대폰 번호의 연산자를 일치시키는 방법

소개:
정규식은 텍스트에서 특정 패턴과 일치하는 문자열을 찾는 데 사용할 수 있는 강력한 문자열 일치 도구입니다. Go 언어에서 표준 라이브러리의 regexp 패키지는 정규식을 지원합니다. 이 기사에서는 정규식을 사용하여 휴대폰 번호의 연산자를 일치시키는 방법을 소개하여 독자가 정규식을 사용하여 휴대폰 번호를 더 잘 처리할 수 있도록 돕습니다. regexp包提供了正则表达式的支持。本文将介绍如何使用正则表达式来匹配手机号码的运营商,帮助读者更好地利用正则表达式进行手机号码的处理。

  1. 初始化正则表达式
    首先,我们需要初始化正则表达式并编译成一个对象。在Go语言中,我们可以使用regexp.MustCompile函数来进行编译并返回一个*regexp.Regexp实例。以下是一个示例代码:
import "regexp"

func main() {
    // 手机号码运营商正则表达式
    regex := regexp.MustCompile(`^1(3[4-9]|4[7]|5[0-27-9]|7[678]|8[2-478])d{8}$`)
    
    // 进行手机号码运营商匹配
    phoneNumber := "13456789012"
    if regex.MatchString(phoneNumber) {
        println("匹配成功")
    } else {
        println("匹配失败")
    }
}

在上面的代码中,正则表达式^1(3[4-9]|4[7]|5[0-27-9]|7[678]|8[2-478])d{8}$用于匹配中国大陆手机号码。该正则表达式可以匹配以1开头,后面跟着3、4、5、7或8,然后是8个数字的手机号码。如果匹配成功,则输出"匹配成功",否则输出"匹配失败"。

  1. 使用子表达式提取匹配结果
    在上面的示例代码中,我们只判断了手机号码是否匹配,但没有提取运营商信息。下面,我们将使用子表达式来提取匹配结果。
import (
    "fmt"
    "regexp"
)

func main() {
    // 手机号码运营商正则表达式
    regex := regexp.MustCompile(`^1((3[4-9])|(4[7])|(5[0-27-9])|(7[678])|(8[2-478]))d{8}$`)
    
    // 进行手机号码运营商匹配
    phoneNumber := "13456789012"
    if regex.MatchString(phoneNumber) {
        // 提取运营商信息
        result := regex.FindStringSubmatch(phoneNumber)
        if len(result) > 1 {
            fmt.Printf("运营商:%s
", getCarrier(result[1]))
        }
    } else {
        println("匹配失败")
    }
}

// 根据运营商编码获取运营商名称
func getCarrier(code string) string {
    switch code {
    case "34", "35", "36", "37", "38", "39":
        return "中国移动"
    case "47":
        return "中国移动(物联网号码)"
    case "50", "51", "52", "57", "58":
        return "中国联通"
    case "70", "71", "72":
        return "中国联通(物联网号码)"
    case "82", "83", "84", "85", "86", "87", "88", "89", "80":
        return "中国电信"
    case "74":
        return "中国电信(物联网号码)"
    }
    return "未知运营商"
}

上面的代码中,我们通过使用子表达式(3[4-9])|(4[7])|(5[0-27-9])|(7[678])|(8[2-478])来匹配运营商代码,并使用regex.FindStringSubmatch函数提取运营商代码作为参数调用getCarrier

    정규식 초기화
      먼저 정규식을 초기화하고 객체로 컴파일해야 합니다. Go 언어에서는 regexp.MustCompile 함수를 사용하여 *regexp.Regexp 인스턴스를 컴파일하고 반환할 수 있습니다. 다음은 샘플 코드입니다.

    1. rrreee
    2. 위 코드에서 정규식 ^1(3[4-9]|4[7]|5[0-27-9]|7[678] | 8[2-478])d{8}$는 중국 본토 휴대폰 번호를 일치시키는 데 사용됩니다. 이 정규식은 1로 시작하고 그 뒤에 3, 4, 5, 7, 8, 8자리 숫자가 오는 휴대폰 번호를 일치시킬 수 있습니다. 일치가 성공하면 "Match Success"가 출력되고, 그렇지 않으면 "Match Failed"가 출력됩니다.

      하위 표현식을 사용하여 일치하는 결과 추출

      위 샘플 코드에서는 휴대폰 번호 일치 여부만 판단했을 뿐, 통신사 정보는 추출하지 않았습니다. 아래에서는 하위 표현식을 사용하여 일치하는 결과를 추출하겠습니다. 🎜🎜rrreee🎜위 코드에서는 하위 표현식 (3[4-9])|(4[7])|(5[0-27-9])|(7[678] )| (8[2-478])를 사용하여 운송업체 코드를 일치시키고 regex.FindStringSubmatch 함수를 사용하여 운송업체 코드를 getCarrier를 호출하는 매개변수로 추출합니다. > 기능, 운송업체 이름을 가져와서 인쇄하세요. 🎜🎜🎜결론🎜이 글에서는 Go 언어에서 정규식을 사용하여 휴대폰 번호의 연산자를 일치시키는 방법을 소개합니다. 정규식을 통해 휴대폰 번호의 유효성을 빠르게 검증하고, 통신사 정보를 추출할 수 있습니다. 실제 응용 프로그램에서는 정규식을 결합하여 휴대폰 번호 필터링 및 분류와 같은 작업을 수행하여 개발 효율성을 향상시킬 수 있습니다. 🎜🎜🎜위 내용은 이 글의 내용이며, 독자들에게 도움이 되기를 바랍니다. 🎜

위 내용은 바둑언어 정규표현 ​​스킬 : 휴대폰 번호의 통신사 매칭 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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