2017-12-27 10 views
0

私はSwiftにとって非常に新しいです。私は登録ページを作成し、それに検証を適用しています。私は電子メールとパスワードを検証したいと思います。私はアウトレットのコレクションを使用していますし、コンセントのコレクションから価値を得る方法も知りたいです。ここにコードがあります。アウトレットコレクションからパスワード検証のためのテキストフィールド値を取得する方法は?

if senderTag == 0   // Name 
    { 

    } 

    else if senderTag == 1  // Email 
    { 

     func validateEmail(candidate: String) -> Bool { 

      let emailRegex = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}" 

      return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: candidate) 


     } 

     if validateEmail(candidate:How to use this?) 



    } 

    else if senderTag == 2 
    { 

     func isPasswordValid(_ password : String) -> Bool{ 

      let passwordTest = NSPredicate(format: "SELF MATCHES %@", "^(?=.*[A-Z].*[A-Z])(?=.*[[email protected]#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$") 

      return passwordTest.evaluate(with: password) 
     } 

    } 

    else if senderTag == 3 
    { 

     func isPasswordValid(_ password : String) -> Bool{ 

      let passwordTest = NSPredicate(format: "SELF MATCHES %@", "^(?=.*[A-Z].*[A-Z])(?=.*[[email protected]#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$") 

      return passwordTest.evaluate(with: password) 
     } 
    } 

私は、電子メールの検証では、ここで間違っているかを知りたいとどのように私は、パスワード検証を使用できますか?

ありがとうございます。

答えて

0

これはどうですか。

func isEmailAddress() -> Bool { 
     let regex = try! NSRegularExpression(pattern: "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{1,}", 
      options: [.CaseInsensitive]) 

     return regex.firstMatchInString(self, options:[], 
      range: NSMakeRange(0, utf16.count)) != nil 
} 

あなたは直前のような文字列を別の拡張機能を作成して、正規表現でパターンを置き換え、パスワードについては、この

let stringCandidate = "your email here" 
if stringCandidate.isEmailAddress() { 
    //is this what you need? 
} 

と他の文字列を確認することができるように、文字列の拡張機能としてこれを適用する

+0

実は、私はアウトレットのコレクションを使用していました。助けてくれてありがとう、でも私はそれを自分で解決しました。 – Rob

+0

ああ、あなたは文字列を抽出するつもりだったので... – Ghean

0

インポートのUIKit

クラスのViewController:のUIViewController、UITextFieldDelegate {

@IBOutlet var registerTF: [KaustabhTF]! 


// MARK:- App LifeCycle 

override func viewDidLoad() { 

    super.viewDidLoad() 
} 


override func viewWillAppear(_ animated: Bool) { 

    super.viewWillAppear(animated) 
} 


override func viewDidAppear(_ animated: Bool) { 

    super.viewDidAppear(animated) 
} 


override func viewWillDisappear(_ animated: Bool) { 

    super.viewWillDisappear(animated) 
} 


override func viewDidDisappear(_ animated: Bool) { 

    super.viewWillDisappear(animated) 
} 


override func didReceiveMemoryWarning() { 

    super.didReceiveMemoryWarning() 
} 


// MARK:- User Defined 

func nextTextFieldToFirstResponder(textField: KaustabhTF) { 

    let senderTag = textField.tag 


    if textField.absoluteCount() == 0 
    { 
     let alertController = UIAlertController(title: "Alert!!", message: "Please Enter the value here", preferredStyle: UIAlertControllerStyle.alert) 

     alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil)) 

     self.present(alertController, animated: true, completion: nil) 

    } 

    else 
    { 
     registerTF[senderTag + 1].becomeFirstResponder() 
    } 


    if senderTag == 0   // Name 
    { 

    } 

    else if senderTag == 1  // Email 
    { 



    } 

    else if senderTag == 2 // Password 
    { 


    } 

    else if senderTag == 3 // Confirm Password 
    { 

    } 





    /*if senderTag == (registerTF.count - 1) 
    { 
     textField.resignFirstResponder() 
    } 

    else 
    { 
     registerTF[senderTag + 1].becomeFirstResponder() 

    }*/ 


} 


// MARK:- IBAction 

@IBAction func registerB(_ sender: Any) { 

    let email = registerTF[1].text 

    if(email?.isEmpty)!{ 
     print("Email left empty") 
    } 
    else 
    { 
     if(isValidEmail(email: email!)) 
     { 
      print("Valid email") 
     } 
     else 
     { 
      print("Email is invalid") 
     } 
    } 

    let password = registerTF[2].text 

    let Cpassword = registerTF[3].text 

    if(password?.isEmpty)! 
    { 
     print("Password left empty") 
    } 
    else 
    { 
     if(isValidPassword(pass: password)) 
     { 

      if(Cpassword?.isEmpty)! 
      { 
       print("Confirmation password is required") 
      } 
      else 
      { 
       if(password == Cpassword) 
       { 
        print("Password matches with each other") 
       } 
       else 
       { 
        print("Passwords do not match with each other") 
       } 
      } 
     } 
     else 
     { 
      print("Passwords must have 8 charachters with atleast one uppercase, one lowercase and one number") 
     } 
    } 




} 

// MARK:- Email Validation Delegate 

func isValidEmail(email: String) -> Bool { 

    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.evaluate(with: email) 

    return result 

} 

//MARK:- Password Validation 


func isValidPassword(pass:String?) -> Bool { 

    // at least one uppercase, 
    // at least one digit 
    // at least one lowercase 
    // 8 characters total 
    let passwordTest = NSPredicate(format: "SELF MATCHES %@", "(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}") 

    return passwordTest.evaluate(with: pass) 
} 

// MARK:- TextField Delegate 

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    self.nextTextFieldToFirstResponder(textField: textField as! KaustabhTF) 

    return true 
} 

}

関連する問題