Я хочу, чтобы единственный вход пользователя был 8 чисел (вход будет по умолчанию целочисленным).Проверка ввода пользователя (строки) с использованием Ruby
Моя цель - убедиться, что пользователь вводит дату в формате: yyyymmdd.
Если он не будет вводить этот формат, я хочу использовать цикл для ввода ввода еще раз, пока он не установит правильный формат (yyyymmdd).
Моя текущая петля не проверяет дату, она передает каждый вход.
txt=gets
re1='((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3}))(?:[0]?[1-9]|[1][012])(?:(?:[0-2]?\\d{1})|(?:[3][01]{1})))(?![\\d])' # YYYYMMDD 1
re=(re1)
m=Regexp.new(re,Regexp::IGNORECASE);
while m.match(txt)
txt=gets
end
Нет необходимости в регулярных выражениях валидаций (которые являются сложными и медленно), просто попытаться разобрать дату и, если исключение, поймать его, отображать Сообща ошибку и попросить пользователь для повторного ввода даты (сделать это в цикле, который ломается только при вводе действительной даты) – alfasin