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

时间:2014-09-03 18:50:05

标签: ios regex swift uitextfield uitextfielddelegate

我想要做的是在ifF语句中将一些布尔值设置为true,如果textField中包含除字母,数字,短划线和空格之外的其他内容。

然后,对于电子邮件字段,请检查有效的电子邮件。

这就是我检查长度的方式:

    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但不知道如何在这里实现。

感谢您的时间

1 个答案:

答案 0 :(得分:1)

这就是我最终完成它的方式。

    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/