Swift3 仅允许用户名使用字母

Swift3 仅允许用户名使用字母,swift3,Swift3,我试图将用户的名字限制为只允许字母,这样在点击send_按钮后,它应该会在数字或特殊字符上出现错误。我在这里找到了一些示例,但因为它们是基于较旧的swift版本构建的,所以我很难使其正常工作。到目前为止,我一直在设法读取名字,如果这个文本字段上的第一个元素不是字母,则抛出一个错误,但代码允许类似这个名字=J123g或Mark@$,我不希望出现这种情况 func isOneLetter(in text: String) -> Bool { do { let regex

我试图将用户的名字限制为只允许字母,这样在点击send_按钮后,它应该会在数字或特殊字符上出现错误。我在这里找到了一些示例,但因为它们是基于较旧的swift版本构建的,所以我很难使其正常工作。到目前为止,我一直在设法读取名字,如果这个文本字段上的第一个元素不是字母,则抛出一个错误,但代码允许类似这个名字=J123g或Mark@$,我不希望出现这种情况

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")
    }
}

您的正则表达式模式检查是否有一个字母数字字符匹配这两个不需要的示例

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

^[a-zA-Z]+$

您的正则表达式模式检查是否有一个字母数字字符匹配这两个不需要的示例

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

^[a-zA-Z]+$
另一种方法可以是:

let userInput = ""
let set = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ")
if userInput.rangeOfCharacter(from: set.inverted) != nil {
    print("ERROR: There are numbers included!")
}
另一种方法可以是:

let userInput = ""
let set = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ")
if userInput.rangeOfCharacter(from: set.inverted) != nil {
    print("ERROR: There are numbers included!")
}
为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..."
     }
为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..."
     }
首先,您必须用自己的类继承UITextViewDelegate类 阶级

第二,添加一个IBOutlet

第三,您必须确保该对象正在使用

首先,您必须用自己的类继承UITextViewDelegate类 阶级

第二,添加一个IBOutlet

第三,您必须确保该对象正在使用