gpt4 book ai didi

正则表达式匹配字符串中的手机号码

转载 作者:IT王子 更新时间:2023-10-29 02:11:21 26 4
gpt4 key购买 nike

我想从字符串中匹配正确的电话号码。例如:

string := "my phone number is 15817452367"
re := regexp.MustCompile(`1[34578][0-9]{9}`)
re.FindAllString(string, -1)
-> 15817452367

这个结果是对的,但是对于另一个字符串:

string := "my card number is 115817452367"
re := regexp.MustCompile(`1[34578][0-9]{9}`)
re.FindAllString(string, -1)
-> 15817452367 (invalid)

这个正则表达式也匹配电话号码,但我希望这不是一个有效值,我不想从数字字符串中获取电话号码。我该如何修复正则表达式?提前致谢!

最佳答案

您可以检查正则表达式的开头和结尾是否为字符串的开头/结尾一个非数字字符,并且只捕获电话号码。

以下是一些有效的正则表达式示例:

(?:^|[^0-9])(1[34578][0-9]{9})(?:$|[^0-9])

在 Golang 中

re := regexp.MustCompile(`(?:^|[^0-9])(1[34578][0-9]{9})(?:$|[^0-9])`)
submatch := re.FindStringSubmatch("Phone Number: 15817452367;")
if len(submatch) < 2 {
// No match found
}
match := submatch[1]

解释:

查找字符串的开头或非数字字符。包含在非捕获组中。

(?:^|[^0-9])

找到您要搜索的电话号码。包含在捕获组中。

(1[34578][0-9]{9})

查找字符串的末尾或非数字字符。包含在非捕获组中。

(?:$|[^0-9])

关于正则表达式匹配字符串中的手机号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46100642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com