12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package utils
-
- import (
- "fmt"
- "regexp"
- "strings"
- )
-
- // 正整数正则
- func PositiveIntegerRegexp() *regexp.Regexp {
- reg, _ := regexp.Compile("^[1-9][0-9]*$")
- return reg
- }
-
- // 手机号正则 不那么严谨的
- func CellPhoneRegexp() *regexp.Regexp {
- reg, _ := regexp.Compile("^1\\d{10}$")
- return reg
- }
-
- // 固话正则
- func TelPhoneRegexp() *regexp.Regexp {
- // reg, _ := regexp.Compile("^0\\d{2,3}-?\\d{7,8}$")
- reg, _ := regexp.Compile("^0\\d{2,3}-?\\d{7,8}$")
- return reg
- }
-
- // 手机号或固话正则
- func PhoneRegexp() *regexp.Regexp {
- reg, _ := regexp.Compile("^(0\\d{2,3}-?\\d{7,8}$)|(1\\d{10}$)")
- return reg
- }
-
- // tests
- func PositiveIntegerRegexpTest() {
- reg := PositiveIntegerRegexp()
- fmt.Println("12 是否匹配:", reg.MatchString("12"))
- fmt.Println("1 是否匹配:", reg.MatchString("1"))
- fmt.Println("980030 是否匹配:", reg.MatchString("980030"))
- fmt.Println("01 是否匹配:", reg.MatchString("01"))
- fmt.Println("asd1asd 是否匹配:", reg.MatchString("asd1asd"))
- fmt.Println("a12 是否匹配:", reg.MatchString("a12"))
- fmt.Println("12a 是否匹配:", reg.MatchString("12a"))
- fmt.Println("-12 是否匹配:", reg.MatchString("-12"))
- fmt.Println("12.1 是否匹配:", reg.MatchString("12.1"))
- fmt.Println("14j2a 是否匹配:", reg.MatchString("14j2a"))
- }
-
- func CellPhoneRegexpTest() {
- reg := CellPhoneRegexp()
- fmt.Println("13632250447 是否匹配:", reg.MatchString("13632250447"))
- fmt.Println("12000000000 是否匹配:", reg.MatchString("12000000000"))
- fmt.Println("30001212325 是否匹配:", reg.MatchString("30001212325"))
- fmt.Println("1233123 是否匹配:", reg.MatchString("1233123"))
- fmt.Println("123312312344 是否匹配:", reg.MatchString("123312312344"))
- fmt.Println("13345678a12 是否匹配:", reg.MatchString("13345678a12"))
- fmt.Println("a13345678a1 是否匹配:", reg.MatchString("a13345678a1"))
- fmt.Println("1334a678a12 是否匹配:", reg.MatchString("1334a678a12"))
- fmt.Println("1345678a12a 是否匹配:", reg.MatchString("1345678a12a"))
- fmt.Println("aqwertyuioo 是否匹配:", reg.MatchString("aqwertyuioo"))
- }
-
- func TelPhoneRegexpTest() {
- reg := TelPhoneRegexp()
- fmt.Println("020-39006917 是否匹配:", reg.MatchString("020-39006917"))
- fmt.Println("02039006917 是否匹配:", reg.MatchString("02039006917"))
- fmt.Println("0754-5916612 是否匹配:", reg.MatchString("0754-5916612"))
- fmt.Println("07545916612 是否匹配:", reg.MatchString("07545916612"))
- fmt.Println("123-39006917 是否匹配:", reg.MatchString("123-39006917"))
- fmt.Println("1754-5916612 是否匹配:", reg.MatchString("1754-5916612"))
- fmt.Println("0a0-39006917 是否匹配:", reg.MatchString("0a0-39006917"))
- fmt.Println("0a039006917 是否匹配:", reg.MatchString("0a039006917"))
- fmt.Println("010-39s06917 是否匹配:", reg.MatchString("010-39s06917"))
- fmt.Println("020-390069171 是否匹配:", reg.MatchString("020-390069171"))
- fmt.Println("020-3900691 是否匹配:", reg.MatchString("020-3900691"))
- }
-
- var (
- coefficient []int32 = []int32{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}
- code []byte = []byte{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}
- )
-
- // 校验一个身份证是否是合法的身份证
- func Verification(idCardNo string) bool {
- if len(idCardNo) != 18 {
- return false
- }
-
- idByte := []byte(strings.ToUpper(idCardNo))
-
- sum := int32(0)
- for i := 0; i < 17; i++ {
- sum += int32(byte(idByte[i])-byte('0')) * coefficient[i]
- }
- return code[sum%11] == idByte[17]
- }
|