【问题标题】:How do you validate an Australian phone number in Swift? [duplicate]如何在 Swift 中验证澳大利亚电话号码? [复制]
【发布时间】:2018-05-07 06:03:32
【问题描述】:

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

我想对此进行修改,以便验证澳大利亚号码。问题是下面代码中的 RegEx 验证似乎只验证美国号码。我尝试了几种不同的值,但似乎都不起作用。

有什么想法吗?

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)
                }
            }
        }
    }
}

【问题讨论】:

标签: ios swift regex phone-number


【解决方案1】:

要验证澳大利亚手机,请使用:

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

【讨论】:

  • 谢谢,但我在每个 '\' 处都收到一个'Invalid escape sequence in literal' 错误
  • 将每个 \ 替换为 \\
  • 好的,消除了错误,但 'isValid(regex: .phone)' 返回 false。所以正则表达式不起作用。
  • 正则表达式在没有第一个和最后一个“/”正斜杠的情况下工作。感谢您的帮助。
  • 好@Roggie,不客气
猜你喜欢
  • 2015-06-04
  • 1970-01-01
  • 2015-07-13
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
相关资源
最近更新 更多