2016-10-01 85 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..." 
    } 
相關問題