接收用户输入并确认格式



我是一个Ruby新手:我只完成了它的十年代码,我对Rails的经验非常有限。

我正在尝试创建一个简单的函数,它将接受用户的输入,并查看它是否符合序列号的正确标准:三个大写字母,一个破折号,然后是七个数字。

到目前为止我写的是:

"enter serial"
serialNumber = gets.chomp
serNumarr = serialNumber.split("")
caps = serNumarr[0..2]
dash = serNumarr[3]
nums = serNumarr[4..10]
if dash != "-"
    puts "not a serial Number"
end

现在我也问过其他论坛,我被告知使用这个代码:

def letter?(lookAhead)
  lookAhead =~ /[[:alpha:]]/
end

但是我没有使用正则表达式的经验。我如何使用上面的代码来解决我的问题?谢谢。

这是一个人为的解决方案:

puts "enter three capital letters, a dash, and then seven numbers:"
input = gets.chomp  #=> note that input is a String
if input =~ /^[A-Z]{3}-d{7}$/
  puts "valid"
else
  puts "invalid"
end

将正则表达式分解为人类可读的语言:

  • ^表示行开始(除非它是在一个字符类中,它是否定的)
  • [A-Z]{3}表示任意大写字母的3;[]表示一个字符类(即大写字母),相关联的{3}表示恰好三个字符类
  • -是破折号
  • d{7}表示7位数字
  • $表示行结束

如果你没有正则表达式的经验,找一个教程,花时间学习基础知识是值得的。http://rubular.com/是一个在线正则表达式编辑器,我不能强烈支持它。

最新更新