为什么在映射到hash时这个正则表达式不起作用?

时间:2013-09-02 05:59:49

标签: javascript regex

好奇为什么这不起作用。我已经通过了许多不同的排列,但总的来说这就是我想做的事情,并且无法让它发挥作用。

基本上,使用哈希键查找匹配项,然后使用该键获取哈希引用的值。

 var arr = {'blah':'WULLVERT','misc':'DUDETTER'};
 var test_string = "maryLou is misc &&& such a cool mary blah dude yeah wullvert";
 test_string = test_string.replace(/(jQuery.map(reg,function(k,v){return v}).join("|"))/gi,arr["$1"]);
 test_string;

当然,当我使用字符串文字时..这有效:(虽然仍然不能使用$ 1作为哈希引用)。

     test_string = test_string.replace(/(blah|msic)/gi,"$1_proofofconcept");

1 个答案:

答案 0 :(得分:3)

使用new RegExp(..)动态生成正则表达式对象。

var arr = {'blah':'WULLVERT','misc':'DUDETTER'};
var test_string = "maryLou is misc &&& such a cool mary blah dude yeah wullvert";
test_string.replace(
    new RegExp(jQuery.map(arr,function(v,k){return k}).join("|"), 'gi'),
    function(x) { return arr[x]; }
);
// => "maryLou is DUDETTER &&& such a cool mary WULLVERT dude yeah wullvert"