如何使用javascript一次制作两个动作

时间:2015-05-23 09:28:52

标签: javascript regex replace

我的元素:

<p id="someid"> 1 word , 2 words, one word, two words.</p>

我的剧本:

var doc = document.getElementById("someid").innerHTML;
var x = ["1 word", "2 words"];
var y = ["one word", "two words"];

for (i = 0; i < x.length; i++) {
    var a = x[i];
    var b = y[i];
    var c = "\\b"+a+"\\b";
    var d = new RegExp(c,'gi');
    doc = doc.replace(d, b); 
}
document.getElementById("someid").innerHTML = doc;

结果:

  

&lt; p id =&#34; someid&#34;&gt;一个单词,两个单词,一个单词,两个单词。&lt; / p&gt;

但我想将其更改为:

  

&lt; p id =&#34; someid&#34;&gt;一个单词,两个单词,一个单词,两个单词。&lt; / p&gt;   

我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您的代码只是将a的所有匹配替换为相应的b,但您需要进行一些更改才能使其成为双向:

var c = "(\\b"+a+"\\b)|(\\b"+b+"\\b)";
var d = new RegExp(c,'gi');
doc = doc.replace(d, function (match, p1) {
    return p1 ? b : a;
});

因此它将a与相应的b匹配,反之亦然。

jsfiddle DEMO

相关问题