Go語言正規表示式技巧:如何匹配手機號碼的運營商
導語:
正規表示式是一種強大的字串匹配工具,可以用於在文字中找到符合某種模式的字串。在Go語言中,標準庫中的regexp
套件提供了正規表示式的支援。本文將介紹如何使用正規表示式來搭配手機號碼的電信商,幫助讀者更好地利用正規表示式進行手機號碼的處理。
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個數字的手機號碼。如果匹配成功,則輸出"匹配成功",否則輸出"匹配失敗"。
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語言正規表示式技巧:如何匹配手機號碼的運營商的詳細內容。更多資訊請關注PHP中文網其他相關文章!