我正在尝试使用变量(保存)作为正则表达式字符集但保持为空
function mutation(arr) {
var save = arr[1];
var rgx = /[save]/gi;
return arr[0].match(rgx).join('') == arr[0];
}
mutation(["Mary", "Army"]);
该函数的目标是通过返回true或false来查看arr [1]的所有字母是否都包含在arr [0]中。当我手动将arr [1]放入字符集(在这种情况下返回true)时,函数确实可以正常工作,只是无法使用该变量。
答案 0 :(得分:1)
由于无法使用带有变量的/.../
表示法构建正则表达式模式,因此您的确切当前方法无法工作(我认为)。但是,我们仍然可以使用RegExp
来构建模式。对于您向我们展示的示例数据,这里有一个正则表达式可以工作:
^(?!.*[^Mary]).*$`
换句话说,我们可以在第二个字符串Army
上声明其所有字符都可以在第一个字符串Mary
中找到。
function mutation(arr) {
var save = arr[1];
var rgx = "^(?!.*[^" + save + "]).*$";
var re = new RegExp(rgx, "gi");
return re.test(arr[0]);
}
console.log(mutation(["Mary", "Army"]));
console.log(mutation(["Jon Skeet", "Tim Biegeleisen"]));