Why is my string matching something in an array wh

2019-09-14 07:44发布

问题:

Using Rails 5 and Ruby 2.4. I can't understand why the below is matching . I have an array of strings and I want to see if my string matches any of those in the array, so I tried this

2.4.0 :021 > SEPARATOR_TOKENS = ["-"]
 => ["-"]
2.4.0 :022 > data = "W40"
 => "W40"
2.4.0 :023 > data =~ /[#{Regexp.union(SEPARATOR_TOKENS)}]/
 => 0

even though there is no "-" in my string, it is reporting a match. HOw do I correct this? Note, I have radically sipmlified this example so using an ".include?" is not an option because what I'm doing will eventually include regular expressions.

回答1:

Regexp.union already produces a regular expression, you don't need to use /.../

Try this:

data =~ Regexp.union(SEPARATOR_TOKENS)