Rails - 如何将变量插入到正则表达式(Regex)中,例如assert_match

rob*_*sco 21 ruby ruby-on-rails

我想做点什么

assert_match /blah blah blah #{@user}/, @some_text
Run Code Online (Sandbox Code Playgroud)

但我工作没有运气.

我在这做错了什么?

小智 31

这是将变量插入正则表达式的正确方法:

irb(main):001:0> a='Hi'
=> "Hi"
irb(main):002:0> b=/Not #{a}/
=> /Not Hi/
Run Code Online (Sandbox Code Playgroud)

所以你的问题很可能是因为匹配不好导致断言失败.检查@user和@some_text的值,并尝试http://rubular.com以提供匹配的正则表达式


gle*_*ald 12

如果@user字符串有可能包含特殊的正则表达式字符,则应将其修改为:

/blah blah blah #{Regexp.escape(@user)}/
Run Code Online (Sandbox Code Playgroud)