如果您担心的话,您应该编写一个单元测试。
要快速测试您的正则表达式,请使用irb
并编写普通的旧 Ruby:
irb(main):005:0> (1..40).map(&:to_s).grep(/[2-3][0-9]/)
=> ["20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39"]
也就是说,有比通过正则表达式过滤整个序列更好的方法来生成数字范围。事实上,这可能是worst这样做的方式。
(20..39).to_a
or
20.upto(39).to_a
or
20.times.map { |i| 20 + i }
还有很多很多很多。他们都是无限地比使用正则表达式将较大的一组数字过滤为仅您需要的数字以构建简单的顺序范围更好。