Ruby 包含2个元素的数组的Regexp

Ruby 包含2个元素的数组的Regexp,ruby,regex,rspec,Ruby,Regex,Rspec,我不知道ruby中是否存在一个regexp来表示您期望一个包含2个整数的数组,并且每个数字不能大于10或小于0。两个数字的相加不能大于10。我一直在网上寻找,但没有找到任何有用的东西。我希望你能帮助我。谢谢 我的尝试有点像 expect(game.player.shoot).to eq([\d[0-10],\d[0-10]]) 但我知道这根本不起作用 我不希望使用正则表达式来检查数组中的值。 你的值是字符串吗?如果是这样的话,它们真的应该是字符串或更早解析吗 如果它们已经是整数,则应该这样做:

我不知道ruby中是否存在一个regexp来表示您期望一个包含2个整数的数组,并且每个数字不能大于10或小于0。两个数字的相加不能大于10。我一直在网上寻找,但没有找到任何有用的东西。我希望你能帮助我。谢谢

我的尝试有点像

expect(game.player.shoot).to eq([\d[0-10],\d[0-10]])

但我知道这根本不起作用

我不希望使用正则表达式来检查数组中的值。 你的值是字符串吗?如果是这样的话,它们真的应该是字符串或更早解析吗

如果它们已经是整数,则应该这样做:

expect(game.player.shoot.all? {|s| (0..10).include?(s) }).to be_true
要检查其总和是否不大于10:

expect(game.player.shoot.reduce(:+)).to be <= 10

expect(game.player.shoot.reduce(:+)。要想成为的一员,如果你真的想用regexp的方式,我建议你使用下面的方法

它有目的地分两步进行,因为您正在测试两个不同的东西,并保持断言的独立性

expect( game.player.shoot.count ).to eq(2)
expect( game.player.shoot ).to all( match(/[0-9]|10/) )
正如前面在其他答案中所说,只有当game.player.shoot是一组字符串时,这才有效,否则最后一行应该更像

expect( game.player.shoot ).to all( (be >= 0).and(be <= 10) )

你能举个例子(输入加上预期输出)吗?不清楚正则表达式应用到的字符串中如何表示数组。请注意,要求两个整数为非负且总和最多为10意味着每个整数不超过10。下一票是我的,因为我发布了一个模糊的问题,并且没有回应澄清请求(mine和@floum's)。如果您通过编辑进行澄清,我将收回否决票。我正在尝试测试一个方法player.shot是否返回一个包含两个整数的数组,每个整数都等于或大于0,都等于或小于10。我在打卡塔保龄球。但不管怎样,我一直在尝试另一种更好的方法。对不起,我的回答迟了。是的。它们是整数。我使用了你的第一个解决方案,对我很有用。我用它来测试一个方法是否返回一个整数为0到10的数组。非常感谢。
expect( game.player.shoot ).to all( satisfy{ |shoot| (0..10).include? shoot } )