2015-02-08 44 views

回答

1

您需要在模式中添加单词边界。 \b匹配单词字符和非单词字符。

对于1-12

/\b(?:1[012]|[1-9])\b/ 

对于1-31

\b(?:[12]\d|3[01]|[1-9])\b 
+0

我假设你可以改为使用捕获组,或者添加两个'\ b'并且没有组。正确? – 2015-02-08 17:18:15

+0

是的,你是对的。但它扩展了正则表达式。 – 2015-02-08 17:21:28

0

在我看来,这不是一个单一的正则表达式的工作。在几年后回顾它时,难道不会很难理解这些代码吗?为什么不把它分成两部分?

my_string = 'abc 01 def' 
my_string2 = 'abc 8 def' 

p ('1'..'12').include?(my_string[/\d+/]) #=> false 
p ('1'..'12').include?(my_string2[/\d+/]) #=> true