gpt4 book ai didi

regex - 电话号码正则表达式不适用于 swift

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:29 25 4
gpt4 key购买 nike

<分区>

我正在开发一个可处理电话号码的应用程序,但我在使用正则表达式查找字符串中的电话号码时遇到问题。

我的应用会查看联系人的电话号码,它可以是:

(带破折号“-”)
XXXX-XXXX
XXXXX-XXXXX
(YY) XXXX-XXXX
(YY) XXXXX-XXXX
+ZZ (YY) XXXX-XXXX
+ZZ (YY) XXXXX-XXXX


(无破折号)
XXXXXXXX
XXXXXXXXX
(YY) XXXXXXXX
(YY) XXXXXXXXX
+ZZ (YY) XXXXXXXX
+ZZ (YY) XXXXXXXXX

基于上述所有这些可能性,我编写了以下代码:

    let range = telefone.rangeOfString("[0-9]{4,5}-[0-9]{4}", options:.RegularExpressionSearch)
let range2 = telefone.rangeOfString("[0-9]{9}$", options:.RegularExpressionSearch)

var found: String?

if range != nil{
found = telefone.substringWithRange(range!)
}else if range2 != nil{
found = telefone.substringWithRange(range2!)
}

print(found)

range 是查找电话号码的正则表达式(带破折号“-”)
range2 是为电话号码提供资金的正则表达式(没有破折号)

使用这个代码,我只得到电话号码,没有国家代码或区号。

问题是,当我使用
+ZZ (YY) XXXXX-XXXX

这样的电话号码进行测试时,这段代码会在 found 变量上返回 nil

有人能帮我找到另一种方法来编写正则表达式以仅获取包含所有联系电话号码的字符串的“X”值吗?

更新:

注意到上面的代码,变量范围,返回null

    var telefone = "+42 43 23123-2221"

let range = telefone.rangeOfString("\\d{4,5}\\-?\\d{4}", options:.RegularExpressionSearch)

print("range \(range)") //here returns nil

playground

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