package main import ( "fmt" "regexp" ) // IsEmail 检查邮箱地址格式是否合法 // @param email string 邮箱地址 // @return bool 检查结果 func IsEmail(email string) bool { pattern := `^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$` return regexp.MustCompile(pattern).MatchString(email) } // IsMobile 检查手机号码格式是否合法 // @param mobile string 手机号码 // @return bool 检查结果 func IsMobile(mobile string) bool { pattern := `^(13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8}$` return regexp.MustCompile(pattern).MatchString(mobile) } // IsPositiveInt 检查数字是否为正整数 // @param num string 数字 // @return bool 检查结果 func IsPositiveInt(num string) bool { pattern := `^[1-9]\d*$` return regexp.MustCompile(pattern).MatchString(num) } // IsTime 检查时间是否合法 // @param time string 时间,格式:时:分:秒,示例:5:1:2、12:34:56 // @return bool 检查结果 func IsTime(time string) bool { pattern := `^([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$` return regexp.MustCompile(pattern).MatchString(time) } // IsDate 检查日期是否合法 // @param date string 日期,格式:年-月-日,示例:2008-08-08 // @return bool 检查结果 func IsDate(date string) bool { pattern := `^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$` return regexp.MustCompile(pattern).MatchString(date) } // IsIp 检查IP地址(IPV4)是否合法 // @param ip string IP地址(IPV4),示例:183.232.231.172 // @return bool 检查结果 func IsIp(ip string) bool { pattern := `^\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}$` return regexp.MustCompile(pattern).MatchString(ip) } func main() { var email string var mobile string var num string var time string var date string var ip string email = "demo@manong.life" if IsEmail(email) { fmt.Printf("『%v』是合法邮箱地址 \n", email) // 『demo@manong.life』是合法邮箱地址 } else { fmt.Printf("『%v』是非法邮箱地址 \n", email) } email = "demo#manong.life" if IsEmail(email) { fmt.Printf("『%v』是合法邮箱地址 \n", email) } else { fmt.Printf("『%v』是非法邮箱地址 \n", email) // 『demo#manong.life』是非法邮箱地址 } mobile = "18800000000" if IsMobile(mobile) { fmt.Printf("『%v』是合法手机号码 \n", mobile) // 『18800000000』是合法手机号码 } else { fmt.Printf("『%v』是非法手机号码 \n", mobile) } mobile = "10800000000" if IsMobile(mobile) { fmt.Printf("『%v』是合法手机号码 \n", mobile) } else { fmt.Printf("『%v』是非法手机号码 \n", mobile) // 『10800000000』是非法手机号码 } num = "1024" if IsPositiveInt(num) { fmt.Printf("『%v』是正整数 \n", num) // 『1024』是正整数 } else { fmt.Printf("『%v』非正整数 \n", num) } num = "1.24" if IsPositiveInt(num) { fmt.Printf("『%v』是正整数 \n", num) } else { fmt.Printf("『%v』非正整数 \n", num) // 『1.24』非正整数 } time = "5:1:2" if IsTime(time) { fmt.Printf("『%v』是合法时间 \n", time) // 『5:1:2』是合法时间 } else { fmt.Printf("『%v』是非法时间 \n", time) } time = "12:34:56" if IsTime(time) { fmt.Printf("『%v』是合法时间 \n", time) // 『12:34:56』是合法时间 } else { fmt.Printf("『%v』是非法时间 \n", time) } time = "23:45:67" if IsTime(time) { fmt.Printf("『%v』是合法时间 \n", time) } else { fmt.Printf("『%v』是非法时间 \n", time) // 『23:45:67』是非法时间 } date = "2008-08-08" if IsDate(date) { fmt.Printf("『%v』是合法日期 \n", date) // 『2008-08-08』是合法日期 } else { fmt.Printf("『%v』是非法日期 \n", date) } date = "2008-02-30" if IsDate(date) { fmt.Printf("『%v』是合法日期 \n", date) } else { fmt.Printf("『%v』是非法日期 \n", date) // 『2008-02-30』是非法日期 } ip = "183.232.231.172" if IsIp(ip) { fmt.Printf("『%v』是合法IP地址 \n", ip) // 『183.232.231.172』是合法IP地址 } else { fmt.Printf("『%v』是非法IP地址 \n", ip) } ip = "183.232.231.XXX" if IsIp(ip) { fmt.Printf("『%v』是合法IP地址 \n", ip) } else { fmt.Printf("『%v』是非法IP地址 \n", ip) // 『183.232.231.XXX』是非法IP地址 } } //========== 总结 ==========// // 1、使用regexp.MatchString("pattern", "s")虽然代码简洁,但性能regexp.MustCompile("pattern").MatchString("s")比稍差,建议使用后者。
Copyright © 2024 码农人生. All Rights Reserved