Ruby 使用Regex简单验证五位Zipcode

Ruby 使用Regex简单验证五位Zipcode,ruby,Ruby,我正在编写一个程序,允许用户输入一个五位数的邮政编码,以获取本地电影院及其列表。稍后我将在程序中删除这些信息,以填充剧院和电影对象。最终,我将找到一种方法来保存所有这些数据。但此时在我的CLI文件中,我希望用户输入五位数的邮政编码或单词exit。这是到目前为止的代码 def program_input input = gets if input.chomp == "exit" puts "Enjoy your movie!" elsif input.chomp == #fiv

我正在编写一个程序,允许用户输入一个五位数的邮政编码,以获取本地电影院及其列表。稍后我将在程序中删除这些信息,以填充剧院和电影对象。最终,我将找到一种方法来保存所有这些数据。但此时在我的CLI文件中,我希望用户输入五位数的邮政编码或单词exit。这是到目前为止的代码

def program_input
  input = gets
  if input.chomp == "exit"
    puts "Enjoy your movie!"
  elsif input.chomp == #five digit zipcode validator
    sleep(0.5)
    print "Calculating"
    sleep(0.25)
    print "."
    sleep(0.25)
    print "."
    sleep(0.25)
    print "."
    zip_code = input.chomp
    scraper = Scraper.new(zip_code)
  end
end
我需要的是
elsif
语句行。我想使用
regex
或其他方法来验证输入是否是一个类似邮政编码的五位数字。我不想使用外部gem,也不想根据所有五位邮政编码的列表进行验证

我考虑验证数字是否在00001到99999之间。或者查看zipcodes列表,找到一个编号最低的ZipCode,数字较高的ZipCode,并接受该范围内的所有数字,但我意识到,如果不是一个有效的ZipCode,则会有大量符合该逻辑的数字缺口

基本上,如果用户键入exit,我希望程序退出。我将在这里添加downcase语句,在检查是否为小写“exit”之前,将所有字母的首字母去掉。但是,如果用户输入一个有效的五位数邮政编码,我希望它继续运行程序……就像在将zipcode插入URL中一样,然后在构建剧院和电影对象并将该信息返回给用户之前,从该URL中获取程序所需的信息。我没有显示代码的这一部分,因为当在
scraper
行上传递一个5位数的zip时,它已经被写入并工作了


非常感谢您的帮助。

我建议您在这里使用
案例陈述
,因为它使用
=
方法来确定匹配项

response = gets.chomp

case response
when "exit"
  puts "Enjoy your movie!"
when /\A\d{5}\z/
  # process zip code given by response
else
  # ?
end
注意
/\A\d{5}\z/==“01234”#=>true
。看见正则表达式的内容是:“匹配字符串的开头(
\A
),然后是五位数字(
\d{5}
),最后是字符串的结尾(
\z

如果希望响应
“exit”
具有与
“exit”
相同的效果,则可以将“exit”
替换为,例如,
/\A[Ee]xit\z/