正则表达式为1-31 Ruby
我试图匹配任何数字1-31(包括)。
这是我最接近的:
([1-9]|[12]\d|3[01])
但接受324这样的数字。
那里有一个可以捕获1-31的正则表达式的机会吗?
以下正则表达式满足您的条件:
^([1-9]|[12][0-9]|3[01])$
在这里演示
请使用数字比较
根据您真正想要做的事情或与您的代码进行通信,简单地提取所有整数并拒绝超出所需范围的整数可能更有意义。 例如:
str = '0 1 20 31 324' str.scan(/\d+/).map(&:to_i).reject { |i| i < 1 or i > 31 } #=> [1, 20, 31]
试试这个: /^([0-9]|1[0-9]|2[0-9]|3[01])$/
这是一个例子:
str = STDIN.gets.chomp if str =~ /^([0-9]|1[0-9]|2[0-9]|3[01])$/ puts "Match!" else puts "No match!" end
这是一个:
/^(#{(1..31).to_a * '|'})$/ #=> /^(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/