我正在尝试将自定义ORKTextAnswerFormat合并到我的应用程序中,并且只允许用户输入字母数字字符。我只想要大写/小写字母和数字-没有符号或重音字母。
例如,不应允许他们输入“example!”,因为它包含一个感叹号。
到目前为止,我尝试的代码如下:

// REGEX
let linkRegexPattern = "[^a-zA-Z0-9]"
let linkRegex = try! NSRegularExpression(pattern: linkRegexPattern,
                                                 options: .caseInsensitive)
// CUSTOM STEP TO INPUT PATIENT ID
let patientidTitle = "Patient ID"
let patientidQuestion = "Enter the Patient ID provided to you by the hospital."
let patientidAnswerFormat = ORKTextAnswerFormat(validationRegularExpression: linkRegex, invalidMessage: "INVALID")
patientidAnswerFormat.maximumLength = 20
patientidAnswerFormat.multipleLines = false
let patientidStep = ORKQuestionStep(identifier: "patientIDstep", title: patientidTitle, question: patientidQuestion, answer: patientidAnswerFormat)
patientidStep.isOptional = false

但是,在输入上述示例时,我可以按next并继续下一个问题/步骤,而不会抛出错误。我希望在输入合适之前不允许我继续。
我怎样才能做到这一点?
编辑:
如果我输入“test”,它会警告说它是无效的。但是,输入“test!”允许我继续。

最佳答案

[^a-zA-Z0-9]模式在输入字符串中查找除数字或字母以外的字符,然后返回匹配项。
您需要一个匹配由字母或数字组成的整个字符串的正则表达式。因此,您可以使用

let linkRegexPattern = "^[a-zA-Z0-9]*\\z"

它匹配
^-字符串开始
[a-zA-Z0-9]*-0+字母或数字
\z-字符串的最末端。

关于ios - ORKTextAnswerFormat正则表达式验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54404862/

10-11 11:26