正则表达式红宝石

时间:2017-09-12 17:16:14

标签: ruby-on-rails ruby regex string

我需要检查字符串是否以ROT开始,范围0-26和空格....例如我的输入必须是ROT12“some string”,其中ROT可以在ROT0-ROT26范围内...知道如何用

检查ROT

input.match /^ROT/

但需要这样的东西

input.match /^ROT[0..26] /

腐烂后面的白色空间也很重要。

2 个答案:

答案 0 :(得分:3)

你可以随时用以下方式做到这一点:

 input.match(/\AROT(0|1|2|3|4|...26) /)

或更一般地说:

 input.match(/\AROT(1?[0-9]|2[0123456]) /)

其中\A^的更具体版本,表示“字符串开头”,而^表示“行首”。

答案 1 :(得分:1)

为了提高可读性,请考虑单独执行范围测试。

def string_ok?(str)
  str.match?(/\AROT\d+ /) && str[3..-1].to_i <= 26
end

string_ok? "ROT12 "     #=> true
string_ok? "ROT12 cat"  #=> true
string_ok? "ROT "       #=> false
string_ok? "RO0 "       #=> false
string_ok? "ROT0"       #=> false
string_ok? "1ROT0 "     #=> false
string_ok? "ROT27 "     #=> false
string_ok? "ROT-3 "     #=> false