ORKTextAnswerFormat проверка регулярных выражений
Я пытаюсь включить обычай ORKTextAnswerFormat
в мое приложение, и разрешать пользователям вводить только буквенно-цифровые символы. Я хочу только заглавные / строчные буквы и цифры - без символов или букв с акцентом.
Например, им нельзя разрешать вводить "пример!", Так как он содержит восклицательный знак.
Код, который я пробовал до сих пор, выглядит следующим образом:
// 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 ответ
[^a-zA-Z0-9]
pattern находит символ, отличный от цифры или буквы, во входной строке и возвращает совпадение.
Вам нужно регулярное выражение, которое соответствует всей строке, состоящей из букв или цифр. Таким образом, вы можете использовать
let linkRegexPattern = "^[a-zA-Z0-9]*\\z"
Это соответствует
^
- начало строки[a-zA-Z0-9]*
- 0+ букв или цифр\z
- самый конец строки.