如何在正则表达式中使用模板文字?

How do I use a template literal in a regular expression?

我正在编写一个点击某些过滤器的测试,我注意到浏览器之间存在一些差异。例如,在主要浏览器(Chrome、Firefox、Safari)上,复选框完全以这种格式显示:Checkers、Cheese、Salsa、Butter。当我 运行 在 IE11 上测试时,这些字符串是小写的,因为它是小写的,所以我的测试失败了。为了解决这个问题,我希望使用正则表达式。我用来单击这些复选框的功能是可重用的。

我很纳闷,因为我试图在正则表达式中传递字符串,但测试失败。然后我继续创建一个模板文字,有人以这种方式在正则表达式中传递字符串,但测试仍然失败。我的问题是,有没有更聪明的方法将字符串变量传递给正则表达式?

filterPage 看起来像:

     export default class OrderHistory {
      constructor() {
          this.filter = Selector(
                ".filterCheckbox"

}

async selectFilter(text) {
    await t.click(this.filter.withText(`/${text}`/i));

}

测试页面如下所示:

 test(“click the cheese filter”, async t => {
   const cheeseFilter = Cheese;

   await filterPage.selectFilter(cheeseFilter);

});

如果您需要动态构建正则表达式,

RegExp 构造函数可能会完成这项工作,因为它还可以 接受字符串 .

new RegExp(text, 'i');