Golang使用正则表达式

Go语言:检验身份证(包含15、18位身份证)

可以加强一下检验:https://travel.sohu.com/a/673108238_113213

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package main

import "regexp"

func main() {
isIdentityCard(`123456789012345`)
isIdentityCard(`12345678901234567X`)
}

// 识别身份证
func isIdentityCard(identityCard string) {
switch len(identityCard) {
case 15:
// 15位身份证号码:15位全是数字
result, _ := regexp.MatchString(`^(\d{15})$`, identityCard)
msgIdentityCard(result, `位数:15位`)
case 18:
// 18位身份证:前17位为数字,第18位为校验位,可能是数字或X
result, _ := regexp.MatchString(`^(\d{17})([0-9]|X|x)$`, identityCard)
msgIdentityCard(result, `位数:18位`)
default:
msgIdentityCard(false, `身份证位数应该为:15位 与 18位`)
}
}

// 自定义身份证提示信息
func msgIdentityCard(result bool, msg string) {
if result {
println(`正确的身份证`, msg)
} else {
println(`错误的身份证`, msg)
}
}

Go语言:检验是不是一个手机号码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main

import (
"regexp"
)

func main() {
isMobile(`13200000000`)
}

// 识别手机号码
func isMobile(mobile string) {
result, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`, mobile)
if result {
println(`正确的手机号`)
} else {
println(`错误的手机号`)
}
}

Go语言:检验一段话含有中文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import (
"regexp"
)

func main() {
containsChinese(`hello world!`)
containsChinese(`你好世界`)

}

// 识别含有中文
func containsChinese(str string) {
result, _ := regexp.MatchString(`[\x{4e00}-\x{9fa5}]+`, str)
if result {
println(`这段话含有中文`)
} else {
println(`这段话没有中文`)
}
}

Go语言:检验是不是一个邮箱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main

import (
"regexp"
)

func main() {
isEmail(`123-abc@outlook.com`)
}

// 识别电子邮箱
func isEmail(email string) {
result, _ := regexp.MatchString(`^([\w\.\_\-]{2,10})@(\w{1,}).([a-z]{2,4})$`, email)
if result {
println(`正确的邮箱`)
} else {
println(`不是邮箱`)
}
}

正则表达式列表(待续…)