这个非常简单的正则表达式有什么问题?

时间:2016-03-05 19:46:34

标签: ruby regex

我正在尝试测试正则表达式是否匹配2位数字。我明白了:

11 =~ /^\d{1,2}$/
# => nil

然而正则表达式在Rubular上完美无缺。我做错了什么?

3 个答案:

答案 0 :(得分:8)

问题是您正在针对数字而不是字符串测试正则表达式。正则表达式用于匹配字符串。简单地:

'11' =~ /^\d{1,2}$/

11.to_s =~ /^\d{1,2}$/

答案 1 :(得分:3)

您正在呼叫Kernel#=~,它始终返回nil

Rubular不会将您的输入解释为Ruby代码,它将其解释为字符串文字。这就是它在那里工作的原因。

答案 2 :(得分:0)

您正在对数字而不是字符串应用正则表达式,因此将其转换为字符串并重试。