正则表达式为1-31 Ruby

use*_*294 1 ruby regex integer

我试图匹配任何数字1-31(包括).

这是我最接近的:

([1-9]|[12]\d|3[01])
Run Code Online (Sandbox Code Playgroud)

但接受324这样的数字.

那里有一个可以捕获1-31的正则表达式的机会吗?

Tod*_*obs 6

请使用数字比较

根据您真正想要做的事情或与您的代码进行通信,简单地提取所有整数并拒绝超出所需范围的整数可能更有意义.例如:

str = '0 1 20 31 324'
str.scan(/\d+/).map(&:to_i).reject { |i| i < 1 or i > 31 }
#=> [1, 20, 31]
Run Code Online (Sandbox Code Playgroud)

  • 这是解决这个问题的正确方法. (2认同)

arc*_*444 6

以下正则表达式满足您的条件:

^([1-9]|[12][0-9]|3[01])$
Run Code Online (Sandbox Code Playgroud)

演示在这里