为什么我的范围正则表达式语法不起作用?

时间:2017-03-31 16:07:34

标签: ruby regex

我使用的是Ruby 2.4。我想说匹配一个包含3到4个连续数字的字符串。但我的括号语法不起作用

2.4.0 :034 > data = "1234"
 => "1234"
2.4.0 :035 > data =~ /\d{3, 4}/
 => nil

说出这个的直接方式是什么?

2 个答案:

答案 0 :(得分:3)

删除limiting quantifier中的空格:

data =~ /\d{3,4}/

如果您想匹配仅包含3到4位数字的整个字符串,请使用

data =~ /\A\d{3,4}\z/

<强>详情:

  • \A - 字符串开头
  • \d{3,4} - 3到4位
  • \z - 字符串结束。

请参阅Rubular demo

答案 1 :(得分:0)

您的正则表达式被解释为

 \d{3,[ ]4} 

这就是为什么它不起作用。

删除空格

你的正则表达式试图匹配这个

 \d       # digit
 {        # literal
 3        # literal
 ,        # literal
 [ ]      # class
 4        # literal
 }        # literal