在正则表达式字符集中使用变量

时间:2018-04-05 02:48:41

标签: javascript regex variables

我正在尝试使用变量(保存)作为正则表达式字符集但保持为空

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)时,函数确实可以正常工作,只是无法使用该变量。

1 个答案:

答案 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"]));