Ruby正则表达式没有验证条件?

时间:2013-10-24 21:36:18

标签: ruby regex if-statement

我写了第一个正则表达式和一个if条件来检查传递的def参数循环。 它似乎没有正常工作,我猜我的正则表达式有问题。条件运行,但是当它与我想要的模式匹配时,它表示该值与正则表达式不匹配,反之亦然。

我需要的模式是这样的:123456_12345_ABC_123

6 digits 
underscore
5 digits (may include 0 padding)
underscore
3 upper case letters
underscore
3 digits (may include 0 padding)

这是我的代码:

if ev_val.match(/[0-9]{6}(_)[0-9]{5}(_)[a-z]{3}(_)[0-9]{3}/)

    puts "#{ev_val} matches required batch naming convention"
else
    puts "#{ev_val} doesn't match required batch naming convention\nSTOPPING SCRIPT!!!"
    exit
end

如果有人有任何想法,我将不胜感激!

1 个答案:

答案 0 :(得分:2)

而不是:

/[0-9]{6}(_)[0-9]{5}(_)[a-z]{3}(_)[0-9]{3}/

您可以使用:

/\d{6}_\d{5}_[A-Z]{3}_\d{3}/
  • \d是一个数字,AKA [0-9],所以你应该习惯使用那个简写。
  • (_)未在您的代码中完成任何操作,因此请勿捕获下划线,而只需使用_
  • [a-z]会捕获所有较低的 - 大写字母。你想要大写,所以使用[A-Z]