Ruby 恰好包含 x 个整数的字符串的正则表达式

Ruby regex for string that contains exactly x amount of integers

我想制作一个 ruby 正则表达式来匹配恰好包含 x 个整数的字符串。我希望字符串也能够包含其他单词。

示例: 如果 x = 2,则应匹配以下内容: “有 3 辆汽车时速超过 45 英里”

其中第一个整数是 3,第二个整数是 45。

您可以使用通用的正则表达式模式:

^\D*(?:\d+\D+){2}$

您可以将 {2} 替换为字符串中您期望的任意数字。这是一个有效的 demo.

我会写

str = "There were 3 cars going over 45 miles per hour"
str.scan(/\d+/).size == 2
  #=> true

str.gsub(/\d+/).count == 2
  #=> true

后者的优点是 str.gsub(/\d+) returns 一个枚举器,而 str.scan(/\d+/) 创建一个临时数组。

String#gsub that takes an argument but no block, and Enumerable#count的形式。