在Golang中实现手机号脱敏可以使用多种方式,以下是其中的几种:
- 常规方式
这是一种最基本的方式,使用字符串切片将手机号码进行分割,并将中间的数字用*代替。
func DesensitizePhoneNum(phoneNum string) string {
if len(phoneNum) != 11 {
return phoneNum
}
return phoneNum[:3] + "****" + phoneNum[7:]
}
phoneNum := "13812345678"
desensitized := DesensitizePhoneNum(phoneNum)
// desensitized = "138****5678"
- 正则表达式
使用正则表达式可以更加灵活地处理各种格式的手机号码,将符合规则的手机号码进行脱敏。
func DesensitizePhoneNumRegex(phoneNum string) string {
if matched, _ := regexp.MatchString(`^1[3-9]\d{9}$`, phoneNum); matched {
return phoneNum[:3] + "****" + phoneNum[7:]
} else {
return phoneNum
}
}
phoneNum := "13812345678"
desensitized := DesensitizePhoneNumRegex(phoneNum)
// desensitized = "138****5678"
- 使用第三方库
Golang中也有一些第三方库可以用来进行手机号码脱敏,例如go-xmldsig-utils库中的方法。
func DesensitizePhoneNumLib(phoneNum string) string {
if desensitized, err := xmldsig.Desensitize(phoneNum, "phone"); err == nil {
return desensitized
} else {
return phoneNum
}
}
phoneNum := "13812345678"
desensitized := DesensitizePhoneNumLib(phoneNum)
// desensitized = "138****5678"
以上是几种常见的手机号码脱敏方式,可以根据实际需求选择合适的方式进行实现。
评论(0)