2009-08-23 4 views
1

Gibt es sind prägnanter oder Rubyesque Weg, dies zu schreiben:prägnanter ruby ​​regex

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

Nämlich Ich hoffe auf etwas kürzer, wie:

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

, die ich erkennen, ist nicht Gültiger Ruby-Code, aber jemanden zu kennen, kann einen schlaueren Trick kennen.

Antwort

5

Wie wäre es ...

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

Sie einen Schalter verwenden könnte, oder die Ausdrücke verschmelzen (wenn das möglich ist), oder eine Suche verwenden:

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

Dies setzt voraus, dass Sie VoteyDisciple nicht verwenden können, was am sinnvollsten wäre, wo es möglich ist.