ORKTextAnswerFormat 正则表达式验证
ORKTextAnswerFormat regex validation
我正在尝试将自定义 ORKTextAnswerFormat
合并到我的应用程序中,并且只允许用户输入字母数字字符。我只想要 upper/lowercase 个字母和数字 - 没有符号或重音字母。
不应允许他们输入 "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
但是在进入上面的示例后,我可以按下一步并继续下一个 question/step 而不会抛出任何错误。我希望在输入合适之前不允许我继续。
我怎样才能做到这一点?
编辑:
如果我输入 "test",它会提示输入无效。但是,输入 "test!" 允许我继续。
[^a-zA-Z0-9]
模式在输入字符串中找到除数字或字母以外的字符,然后 returns 匹配。
您需要一个匹配由字母或数字组成的整个字符串的正则表达式。因此,您可以使用
let linkRegexPattern = "^[a-zA-Z0-9]*\z"
匹配
^
- 字符串开头
[a-zA-Z0-9]*
- 0+ 个字母或数字
\z
- 字符串的末尾。
我正在尝试将自定义 ORKTextAnswerFormat
合并到我的应用程序中,并且只允许用户输入字母数字字符。我只想要 upper/lowercase 个字母和数字 - 没有符号或重音字母。
不应允许他们输入 "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
但是在进入上面的示例后,我可以按下一步并继续下一个 question/step 而不会抛出任何错误。我希望在输入合适之前不允许我继续。
我怎样才能做到这一点?
编辑:
如果我输入 "test",它会提示输入无效。但是,输入 "test!" 允许我继续。
[^a-zA-Z0-9]
模式在输入字符串中找到除数字或字母以外的字符,然后 returns 匹配。
您需要一个匹配由字母或数字组成的整个字符串的正则表达式。因此,您可以使用
let linkRegexPattern = "^[a-zA-Z0-9]*\z"
匹配
^
- 字符串开头[a-zA-Z0-9]*
- 0+ 个字母或数字\z
- 字符串的末尾。