如何在正则表达式中使用模板文字?
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');
我正在编写一个点击某些过滤器的测试,我注意到浏览器之间存在一些差异。例如,在主要浏览器(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');