Regex不使用Rails、Minitest和Capybara

Regex不使用Rails、Minitest和Capybara,regex,ruby-on-rails-4,capybara,minitest,Regex,Ruby On Rails 4,Capybara,Minitest,我正在使用Capybara和Minitest测试rails 4应用程序。我有这样的测试行可以工作: page.body.must_match(/word/) page.body.must_match(/word2/) 但这不起作用: page.body.must_match(/(word).*(word2)/) 如果我将该正则表达式粘贴到Regexr.com和regex101.com中,则该正则表达式在测试的页面文本中可以完美地工作 那么,对于Rails4/minitest支持什么正则表达式

我正在使用Capybara和Minitest测试rails 4应用程序。我有这样的测试行可以工作:

page.body.must_match(/word/)
page.body.must_match(/word2/)
但这不起作用:

page.body.must_match(/(word).*(word2)/)
如果我将该正则表达式粘贴到Regexr.com和regex101.com中,则该正则表达式在测试的页面文本中可以完美地工作

那么,对于Rails4/minitest支持什么正则表达式,是否存在一些限制?
我真的只是想确认一下,文本中的单词后面是单词2。如果不能用正则表达式实现这一点,那么在minitest中有更好的方法吗?

您没有解释“不工作”是什么意思,但我假设您的意思是正则表达式与页面不匹配,而不是您得到一个关于无效正则表达式的错误。如果您使用的是Capybara中支持JS的任何驱动程序,那么您的失败可能是因为在调用
must\u match
时,页面上的内容实际上不在页面上,这是因为您使用了错误的方法。要在使用Capybara w/minitest时检查页面上的文本,应使用
assert\u text

page.assert_text(/word.*word2/)
当您调用
page.body.must\u match…
时,您将正文html转换为一个静态字符串,然后对其进行一次匹配检查,而
assert\u text
合并了等待/重试行为,以处理未完成加载的页面、动态更改等