验证Ruby中的用户日期输入

时间:2018-01-18 19:58:17

标签: ruby regex validation

我正在尝试在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

1 个答案:

答案 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喜欢两个空格)