Golang正则表达式判断手机号或身份证方法实例
本文将介绍如何在Go语言中利用正则表达式高效地校验手机号和身份证号码的格式有效性,提供具体的代码实现与逻辑解析。
正则表达式基础
正则表达式(Regular Expression)是一种用于匹配字符串模式的文本处理工具。它由普通字符(如a-z)和特殊字符(元字符)组成,通过单个字符串即可描述复杂的匹配规则,常用于数据的格式化检查与提取。
Golang实现具体步骤
第1步:手机号格式验证
目的:确保输入的字符串符合中国大陆11位手机号的常见格式。
分析:中国手机号通常为11位数字,首位固定为1,第二位多为3-9之间的数字。根据需求设定如下规则:
^1:以数字1开头。[345789]{1}:第二位必须是3、4、5、7、8、9中的任意一个。\\d{9}:后续紧跟9位任意数字。$:字符串结束。
操作:使用 regexp.MustCompile 编译规则,并通过 MatchString 方法判断是否匹配。
// CheckMobile 检验手机号格式
func CheckMobile(phone string) bool {
// ^1: 首位为1
// [345789]: 第二位为指定数字范围
// \\d{9}: 后接9位数字
regRuler := "^1[345789]{1}\\d{9}$"
reg := regexp.MustCompile(regRuler)
return reg.MatchString(phone)
}
第2步:身份证号码格式验证
目的:兼容旧版15位身份证号及新版18位身份证号(含X/x结尾)。
分析:
(^\\d{15}$):完全匹配15位纯数字。(^\\d{18}$):完全匹配18位纯数字。(^\\d{17}(\\d|X|x)$):前17位为数字,最后一位为数字或字母X(不区分大小写)。
操作:使用 “|” 符号连接三个规则,表示满足其一即可。
// CheckIdCard 检验身份证号码格式
func CheckIdCard(card string) bool {
// 1. 15位纯数字
// 2. 18位纯数字
// 3. 17位数字+最后一位(数字/X/x)
regRuler := "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"
reg := regexp.MustCompile(regRuler)
return reg.MatchString(card)
}
补充:其他常用正则校验
在实际开发中,除了手机号和身份证,邮箱也是常见的校验对象。以下提供针对Go语言的额外校验函数参考:
手机号更广泛匹配规则
若需覆盖更多号段(如6号段),可调整第二位规则:
// 适用于较广泛的手机号验证
func PhoneCheckRule() string {
return "^1[3|4|5|6|7|8|9][0-9]\\d{8}$"
}
邮箱格式验证
验证标准电子邮箱格式(用户名@域名.后缀):
// 标准邮箱验证
func EmailCheckRule() string {
// [A-Z0-9._%+-]+ : 用户名部分
// @[A-Z0-9.-]+ : 域名部分
// \\. : 转义点号
// [A-Z]{2,6} : 顶级域名长度2-6位
return "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$"
}
总结
以上介绍了在Golang中正则表达式的创建与应用方法。通过 regexp.Compile 预编译规则可以提升运行效率,配合逻辑运算符可实现灵活的格式过滤。以上就是Golang正则表达式判断手机号或身份证方法的详细内容,更多关于Golang正则表达式校验的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









