ios - Swift 中的电子邮件和电话验证

标签 ios swift iphone xcode nsregularexpression

我正在使用以下代码进行电话号码验证。但我收到以下错误。我无法继续下去。帮助我们继续前进。

class PhoneNumberValidation: Validation {
    let PHONE_REGEX = "^\\d{3}-\\d{3}-\\d{4}$"

    func validate(value: String) -> (Bool, ValidationErrorType) {
        if let phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX) {
            if phoneTest.evaluateWithObject(value) {
                return (true, .NoError)
            }
            return (false, .PhoneNumber)
        }
        return (false, .PhoneNumber)
    }
}

错误:swift:15:28:条件绑定(bind)中的绑定(bind)值必须是可选类型

最佳答案

是的,您的错误在 XCode 6.1 中如下

Xcode error screenshot

发生此错误的原因是 if 条件必须为 Bool 返回类型,但在您的 if 条件返回类型为 NSPredicate 中,这样您出现错误swift:条件绑定(bind)中的绑定(bind)值必须是可选类型,您可以按如下方式解决。

    var phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
         if phoneTest.evaluateWithObject(value) {
                  return (true, .NoError)
             }
                 return (false, .PhoneNumber)
            }

Swift 中的电子邮件验证。

    func isValidEmail(testStr:String) -> Bool {
            print("validate emilId: \(testStr)")
            let emailRegEx = "^(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?(?:(?:(?:[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+(?:\\.[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+)*)|(?:\"(?:(?:(?:(?: )*(?:(?:[!#-Z^-~]|\\[|\\])|(?:\\\\(?:\\t|[ -~]))))+(?: )*)|(?: )+)\"))(?:@)(?:(?:(?:[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)*)|(?:\\[(?:(?:(?:(?:(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))\\.){3}(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))))|(?:(?:(?: )*[!-Z^-~])*(?: )*)|(?:[Vv][0-9A-Fa-f]+\\.[-A-Za-z0-9._~!$&'()*+,;=:]+))\\])))(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?$"
            let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
            let result = emailTest.evaluateWithObject(testStr)
            return result
        } 

使用电子邮件验证:

    if isValidEmail("kirit@gmail.com"){
            print("Validate EmailID")
        }
        else{
            print("invalide EmailID")
        }

Swift 中的电话号码验证

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

关于ios - Swift 中的电子邮件和电话验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38106239/

相关文章:

ios - Xcode 测试用例显示没有测试覆盖率

ios - 缩放时调整 UIScrollView 的内容

ios - 如何设置 UIImage 数组中的第二个或中间图像? ( swift 3)

ios - 如何将 CVImageBuffer 转换为 UIImage?

iphone - IAP 正在使用 TestFlight 构建。它也适用于 Live 应用程序吗?

javascript - 如何将一行附加到 Titanium 中的 TableViewSection?

iphone - 如何将 ipa 文件添加到 windows 机器上的 itunes 中?

iOS - 应用程序因特定 Controller 而崩溃

ios - 如何在编辑 uitextfield 时停止在 uitableview 中滚动

ios - 将数据传递到两个选项卡栏 View Controller