ORKTextAnswerFormat проверка регулярных выражений - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь включить пользовательское ORKTextAnswerFormat в свое приложение и разрешать пользователям вводить только буквенно-цифровые символы.Мне нужны только заглавные / строчные буквы и цифры - без символов или букв с акцентом.

EG им нельзя вводить «пример!», Так как он содержит восклицательный знак.

КодДо сих пор я пытался сделать следующее:

// 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

Однако, войдя в приведенный выше пример, я могу нажать следующий и перейти к следующему вопросу / шагу без ошибок.Я хотел бы, чтобы он не позволял мне продолжать, пока ввод не будет подходящим.

Как я могу добиться этого?

РЕДАКТИРОВАТЬ:

Если я введу «тест», он предупреждаетговоря, что это недействительно.Тем не менее, ввод "тест!"позволяет мне продолжить.

1 Ответ

0 голосов
/ 28 января 2019

Шаблон [^a-zA-Z0-9] находит символ, отличный от цифры или буквы, во входной строке и возвращает совпадение.

Вам необходимо регулярное выражение, соответствующее всей строке, состоящей из букв или цифр.Таким образом, вы можете использовать

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

Это соответствует

  • ^ - начало строки
  • [a-zA-Z0-9]* - 0+ букв или цифр
  • \z - самый конец строки.
...