首页 > 解决方案 > TextField 电话号码或电子邮件格式验证迅速吗?

问题描述

我有一个忘记密码的文本字段,在这里用户输入手机号码或电子邮件,然后我们发送 OTP。

我正在尝试使用我的代码验证该文本字段,但它不起作用,任何人对此有一些想法,请通过以下方式找到我的代码。

它需要对 mailid 或电话号码格式有效。

if emaiTF.text == "" {
            print("Enter either valid phone or email")
        }else if let validphone = emaiTF.text, validphone.isValidPhone() || validphone.isValidEmail() {
            print("Enter either valid phone or email")
        }else{
            forGotPasswordApi()
        }

我的验证方法如下。

extension String {
    func isValidEmail() -> Bool {
        // here, `try!` will always succeed because the pattern is valid
        let regex = try! NSRegularExpression(pattern: "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[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])?)*$", options: .caseInsensitive)
        return regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil
    }

    // vrify Valid PhoneNumber or Not
    func isValidPhone() -> Bool {

        let phoneRegex = "^[0-9]{10}$";
        let valid = NSPredicate(format: "SELF MATCHES %@", phoneRegex).evaluate(with: phoneRegex)
        return valid
    }
}

标签: iosswiftvalidation

解决方案


这似乎是您的输出验证中的问题。以以下方式修改您的代码以工作,请验证。

  extension ViewController {

    func checkValidation() {
      if txtUserName.text == "" {
          print("Enter either valid phone or email 1")
      } else if let validphone = txtUserName.text, validphone.isValidPhone() || validphone.isValidEmail() {
          print("Success")
          forGotPasswordApi()
      }else{
        print("Enter either valid phone or email 2")
      }
    }
  }

  extension String {
      func isValidEmail() -> Bool {
          // here, `try!` will always succeed because the pattern is valid
          let regex = try! NSRegularExpression(pattern: "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,3})$", options: .caseInsensitive)
        let valid = regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil
        print("Email validation \(valid)")
          return valid
      }

      // vrify Valid PhoneNumber or Not
      func isValidPhone() -> Bool {

        let regex = try! NSRegularExpression(pattern: "^[0-9]\\d{9}$", options: .caseInsensitive)
        let valid = regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil
        print("Mobile validation \(valid)")
          return valid
      }
  }

推荐阅读