2016-10-01 100 views
0

我想限制用户First_Name只允许字母,所以它应该在点击send_button之后响应数字或特殊字符的错误。我在这里找到了一些例子,但是因为它们是基于较旧的快速版本构建的,所以我遇到了难题使其工作。直到现在,我已经设法读取名字,并抛出一个错误,如果这个文本字段的第一个元素不是字母,但代码允许这样的事情(名字=“J123g”)或(“马克@#$”)我不希望这是事实。只允许用户名字母

func isOneLetter(in text: String) -> Bool { 
    do { 
     let regex = try NSRegularExpression(pattern: "[a-zA-Z]") 
     let nsString = text as NSString 
     let results = regex.matches(in: text, range: NSRange(location: 0, length: nsString.length)) 
     let temp = results.map { nsString.substring(with: $0.range)} 
     return temp.isEmpty 
    } catch let error { 
     print("invalid regex: \(error.localizedDescription)") 
     return false 
    } 
} 

@IBAction func Send_Button(_ sender: AnyObject) { 
    let UserName = First_Name.text 
    if (isOneLetter(in: UserName!)) 
    { 
     DisplayMyAlertMessage(userMessage: "First Name must contain only letter and spaces") 
    } 
} 

回答

2

你的正则表达式模式检查一个字母数字字符其中两个不期望的实例相匹配。

此正则表达式检查从开始^到端$)字符串的必须有一个或多个+字母数字字符[a-zA-Z])。好处是它将空字符串视为不好。

^[a-zA-Z]+$ 
+0

谢谢您的安全,我的代码!现在它完美的工作! –

1

另一种方式可以是:

let userInput = "" 
let set = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ") 
if userInput.rangeOfCharacter(from: set.inverted) != nil { 
    print("ERROR: There are numbers included!") 
} 
0

更新了SWIFT 3:

,如果你想验证姓名和只允许用户名,然后用下面简单的线条信代码:

//函数定义:

func isValidName(_ nameString: String) -> Bool { 

    var returnValue = true 
    let mobileRegEx = "[A-Za-z]{3}" // {3} -> at least 3 alphabet are compulsory. 

    do { 
     let regex = try NSRegularExpression(pattern: mobileRegEx) 
     let nsString = nameString as NSString 
     let results = regex.matches(in: nameString, range: NSRange(location: 0, length: nsString.length)) 

     if results.count == 0 
     { 
      returnValue = false 
     } 

    } catch let error as NSError { 
     print("invalid regex: \(error.localizedDescription)") 
     returnValue = false 
    } 

    return returnValue 
} 

//函数调用:

 var firstName = mEnterFirstNameTextField.text! 

    let isFirstNameValid = isValidName(firstName) 

    if isFirstNameValid{ 
     // do user logic 
    }else{ 
     // show error msg: -> "Enter name is not valid, please enter again..." 
    } 
相关问题