查看有效的电话号码

use*_*630 4 ios swift

我有一个文本字段用于输入电话号码,用户必须按OK按钮.

然后我写了一些函数来检查输入的数字是有效数字还是10位数字.而且我不想添加国家/地区代码.我分开了.

但是,当我按下OK按钮时,它会给我uialert - 所有号码的错号码,包括我自己的号码.我不知道我错过了什么代码?

    func validate(value: String) -> Bool {
        let PHONE_REGEX = "^\\d{3}-\\d{3}-\\d{4}$"
        var phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
        var result =  phoneTest.evaluateWithObject(value)
        return result
    }

    @IBAction func confirmAction(sender: AnyObject) {

        if validate(phoneNumber.text!)
        {
            print("Validate EmailID")
            let phone = countryCode.text! + phoneNumber.text!
            UserNetworkInterface().generateSms(phone, onCompletion: nil)
            performSegueWithIdentifier("ConfirmSmsCode", sender: self)
        }
        else
        {
            print("invalide EmailID")
            let alert = UIAlertView()
            alert.title = "Message"
            alert.message = "Enter Valid Contact Number"
            alert.addButtonWithTitle("Ok")
            alert.delegate = self
            alert.show()
        }
  }
Run Code Online (Sandbox Code Playgroud)

更新 :

 @IBAction func confirmAction(sender: AnyObject) {

        if let phoneNumberValidator = phoneNumber.isPhoneNumber
        {
            print("Validate EmailID")
            let phone = countryCode.text! + phoneNumber.text!
            UserNetworkInterface().generateSms(phone, onCompletion: nil)
            performSegueWithIdentifier("ConfirmSmsCode", sender: self)


        }
        else
        {
            print("invalide EmailID")
            let alert = UIAlertView()
            alert.title = "Message"
            alert.message = "Enter Valid Contact Number"
            alert.addButtonWithTitle("Ok")
            alert.delegate = self
            alert.show()
            phoneNumber.text = ""


        }
                    // Number valid


  }
Run Code Online (Sandbox Code Playgroud)

A.G*_*A.G 19

试试这个.

对String进行扩展.

斯威夫特4

extension String {
    var isPhoneNumber: Bool {
        do {
            let detector = try NSDataDetector(types: NSTextCheckingResult.CheckingType.phoneNumber.rawValue)
            let matches = detector.matches(in: self, options: [], range: NSRange(location: 0, length: self.count))
            if let res = matches.first {
                return res.resultType == .phoneNumber && res.range.location == 0 && res.range.length == self.count
            } else {
                return false
            }
        } catch {
            return false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

较旧的Swift版本

extension String {
    var isPhoneNumber: Bool {
        do {
            let detector = try NSDataDetector(types: NSTextCheckingType.PhoneNumber.rawValue)
            let matches = detector.matchesInString(self, options: [], range: NSMakeRange(0, self.characters.count))
            if let res = matches.first {
                return res.resultType == .PhoneNumber && res.range.location == 0 && res.range.length == self.characters.count
            } else {
                return false
            }
        } catch {
            return false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

override func viewWillAppear(animated: Bool) {

//Sample check
let phoneString = "8888888888"

let phoneNumberValidator = phoneString.isPhoneNumber
print(phoneNumberValidator)

}
Run Code Online (Sandbox Code Playgroud)