ios - 如何在 Swift 中验证澳大利亚电话号码?

标签 ios swift regex phone-number

我已经实现了 @Vasily-Bodnarchuk here 提供的这个很好的解决方案。

我想修改此内容,以便我可以验证澳大利亚的数字。问题是下面代码中的正则表达式验证似乎只验证美国号码。我尝试了一些不同的值,但似乎都不起作用。

有什么想法吗?

extension String {

    enum RegularExpressions: String {
        case phone = "^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$"
    }

    func isValid(regex: RegularExpressions) -> Bool {
        return isValid(regex: regex.rawValue)
    }

    func isValid(regex: String) -> Bool {
        let matches = range(of: regex, options: .regularExpression)
        return matches != nil
    }

    func onlyDigits() -> String {
        let filtredUnicodeScalars = unicodeScalars.filter{CharacterSet.decimalDigits.contains($0)}
        return String(String.UnicodeScalarView(filtredUnicodeScalars))
    }

    func makeAColl() {
        if isValid(regex: .phone) {
            if let url = URL(string: "tel://\(self.onlyDigits())"), UIApplication.shared.canOpenURL(url) {
                if #available(iOS 10, *) {
                    UIApplication.shared.open(url)
                } else {
                    UIApplication.shared.openURL(url)
                }
            }
        }
    }
}

最佳答案

要验证澳大利亚手机,请使用以下命令:

var phoneExpression = "/^\({0,1}((0|\+61)(2|4|3|7|8)){0,1}\){0,1}(\ |-){0,1}[0-9]{2}(\ |-){0,1}[0-9]{2}(\ |-){0,1}[0-9]{1}(\ |-){0,1}[0-9]{3}$/"

// Valid
var phoneNumber1 = "0411 234 567"
var phoneNumber2 = "(02) 3892 1111"
var phoneNumber3 = "38921111"
var phoneNumber4 = "0411234567"

// Invalid
var phoneNumber5 = "3892 11"
var phoneNumber6 = "diane 0411 234 567"
var phoneNumber7 = "bob"

check more details

关于ios - 如何在 Swift 中验证澳大利亚电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50207905/

相关文章:

ios - 从相机方法调用 unwind segue 失败

ios - 如何在点击后更改 UIButton 图像?

python - 正则表达式比使用 .replace() 更快吗

ios - 如何从 UITableView 调用 UITableViewCell 中的添加目标按钮函数?

ios - 向 UISearchBar 添加动态类型

swift - 减慢按钮动画速度

swift - 表格 ScrollView 下的文本 swift

c# - Regex.Matches c# 双引号

java - 如何在正则表达式java中用$替换\$

ios - 如何将 AVCapture 中的图像裁剪为显示器上显示的矩形