我正在尝试测试正则表达式是否匹配2位数字。我明白了:
11 =~ /^\d{1,2}$/
# => nil
然而正则表达式在Rubular上完美无缺。我做错了什么?
答案 0 :(得分:8)
问题是您正在针对数字而不是字符串测试正则表达式。正则表达式用于匹配字符串。简单地:
'11' =~ /^\d{1,2}$/
或
11.to_s =~ /^\d{1,2}$/
答案 1 :(得分:3)
您正在呼叫Kernel#=~
,它始终返回nil
。
Rubular不会将您的输入解释为Ruby代码,它将其解释为字符串文字。这就是它在那里工作的原因。
答案 2 :(得分:0)
您正在对数字而不是字符串应用正则表达式,因此将其转换为字符串并重试。