javascript在regex exec之后替换匹配

时间:2014-10-16 23:21:28

标签: javascript regex replace exec

我有这样的文字:

<div id="myDiv">
    myText: something1
    othertext
    myText: something2
    othertext
    myText: something3
    ....
<div>

我只在多行上匹配字符串后面的文字:myText: 使用这个js:

var myDivText = document.getElementById('myDiv').innerHTML;
var r = /myText:\s*([A-Za-z0-9-]+)/gim;
var m;
while ((m = r.exec(myDivText)) != null){
    console.log(m[1]);
}

输出正确:something1something2something3等。

现在我需要将这些匹配替换为"ReplacedWord"

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以直接在原始字符串上使用.replace()

var myDivText = document.getElementById('myDiv').innerHTML;
var temp = myDivText.replace(/(myText:\s*)([A-Za-z0-9-]+)/gim, "$1ReplacedWord")
console.log(temp);

工作演示:http://jsfiddle.net/jfriend00/Lbhxudv2/

说明:我在正则表达式的开头添加了一个新组,以捕获您不想替换的匹配部分。然后,替换字符串是“$ 1ReplacedWord”,它将第一个匹配部分添加回替换。

答案 1 :(得分:0)

我会推荐replace()功能。

如果你已经尝试了这个并且它不起作用,你的结果是什么?

例如,在while语句中,您可以调用:

myDivText.replace(m[1], "ReplacedWord");

myDivText.replace(m[1], m[1]+"_Replaced");