2009-08-23 107 views
1

是否有写这个的更简洁或Rubyesque方式:更简洁的红宝石正则表达式

if (variable =~ /regex1/ || variable =~ /regex2/ || variable =~ /regex3/ ...) 
end 

也就是说,我希望的东西更短,像:

if (variable =~ /regex1/,/regex2/,/regex3/) 

,我知道的是不有效的Ruby代码,但找出一个人可能会知道一个更聪明的伎俩。

回答

5

......怎么

if (variable =~ /regex1|regex2|regex3/) 
end 
6
[/regex1/,/regex2/,/regex3/].any?{|r| r =~ variable} 
2

你可以使用一个开关,或合并表达式(如果可能的话),或使用一个发现:

if ([/regex1/, /regex2/].find {|r| v =~ r}) ... 
1
variable =~ Regexp.union(/regex1/, /regex2/, /regex3/) 

这是假设你不能使用VoteyDisciple,它会在最有可能的地方使用。