我正在尝试在ruby脚本中验证正确的日期输入。
当我运行脚本时,无论是否正确,它只会询问日期两次。
有人可以告诉我哪里出错了吗?
def get_date(prompt="What is the date of the last scan (YYYYMMDD)")
new_regex = /\A[0-9]{4}[0-1][0-9][0-3][0-9]\z/
print prompt
gets.chomp
if prompt != new_regex
puts "Please enter the date in the correct format"
print prompt
gets.chomp
end
end
答案 0 :(得分:1)
您的代码正在尝试将提示的相似性与正则表达式模式进行比较。
/\A[0-9]{4}[0-1][0-9][0-3][0-9]\z/ === /\A[0-9]{4}[0-1][0-9][0-3][0-9]\z/
是真的。
您的输入也未被捕获,因此未与正则表达式进行比较。
def get_date(prompt="What is the date of the last scan")
new_regex = /\A[0-9]{4}[0-1][0-9][0-3][0-9]\z/
print prompt + " (YYYYMMDD)"
input = gets.chomp
unless (input =~ new_regex) == 0
puts "Please enter the date in the correct format"
get_date(prompt)
end
input
end
如果没有匹配, input =~ new_regex
将为nil(false)。
(ps Rubyists喜欢两个空格)