用户输入和确认格式

时间:2015-09-02 23:57:26

标签: arrays ruby regex input

我是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

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

1 个答案:

答案 0 :(得分:2)

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

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/是一个在线正则表达式编辑器,我不能认真地支持它。