如何为特定类型的字符检查UITextField值,例如字母或数字?

问题描述:

如果textField中包含字母,数字,破折号和空格以外的任何内容,我想在下面的if语句中设置一些布尔值为true。如何为特定类型的字符检查UITextField值,例如字母或数字?

然后在电子邮件字段中检查有效的电子邮件。

这是我如何检查长度:

if countElements(textField.text!) < 2 || countElements(textField.text) > 15 { 
     errorLabel.text = "Name must have between 2 and 15 characters." 
     self.signUpView.signUpButton.enabled = false 
    } else { 
     errorLabel.text = "" 
     self.signUpView.signUpButton.enabled = true 
    } 

这if语句是UITextFieldDelegate方法textFielddidEndEditing内。我有一种感觉,我将不得不使用某种形式的正则表达式来检查有效的电子邮件。

使用正则表达式来检查字段是否仅包含我允许的字符并返回一个布尔值,告诉我文本字段是否包含不允许的字符,以便我可以显示错误消息。

有没有一些首选的方法来做到这一点?在objective-c中我使用NSCharacterSet,但不知道如何在这里实现。

感谢您的时间

这就是我最终做到的。

override func textFieldDidEndEditing(textField: UITextField) { 

     let usernameField = self.signUpView.usernameField.text as NSString 
     let alphaNumericSet = NSCharacterSet.alphanumericCharacterSet() 
     let invalidCharacterSet = alphaNumericSet.invertedSet 
     let rangeOfInvalidCharacters = usernameField.rangeOfCharacterFromSet(invalidCharacterSet) 
     let userHasNameInvalidChars = rangeOfInvalidCharacters.location != NSNotFound 

     if textField == self.signUpView.usernameField { 

      if userHasNameInvalidChars { 
       errorLabel.text = "Letters and numbers only please!" 
       self.signUpView.signUpButton.enabled = false 
       // do more error stuff here 
      } else { 
       self.signUpView.signUpButton.enabled = true 
      } 
     } 
    } 

由于博客文章:http://toddgrooms.com/2014/06/18/unintuitive-swift/