使用Regexp限制字符串中的"1"数

svi*_*eet 0 ruby regex string

我试图使Regexp匹配一个多于或等于两个'1's 的表达式.
这是我到现在所写的 -

puts "Match." if /(1){1,5}/ =~ test_string
Run Code Online (Sandbox Code Playgroud)

这正确匹配'1'大于或等于2的字符串,但如果出现次数'1'大于5 ,它仍然匹配.

如何更正此Regexp以仅匹配出现1到5次的字符串1

Adr*_*agg 6

可能有更好的版本,但这似乎可以解决问题:

  /^([^1]*1){1,5}[^1]*$/
Run Code Online (Sandbox Code Playgroud)

细分:

  • ^ - 字符串开头
  • [^1]*1 - 零个或多个非1个字符
  • 1 - '1'.
  • ([^1]*1){1,5} - 这种模式发生在一到五次之间.
  • [^1]* - 零个或多个非1个字符
  • $ - 字符串结束