我写了第一个正则表达式和一个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
如果有人有任何想法,我将不胜感激!
答案 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]
。