Dave
Dave

Reputation: 19220

Why is my string matching something in an array when that string doesn't contain any of those characters?

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.

Upvotes: 0

Views: 45

Answers (1)

user3723506
user3723506

Reputation:

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

Try this:

data =~ Regexp.union(SEPARATOR_TOKENS)

Upvotes: 1

Related Questions