什么是JavaScript正则表达式来替换两个字符串之间的特定单词?

时间:2013-08-03 09:19:43

标签: javascript regex replace

我想将所有abc替换为jkm#START#中的#END#

输入字符串是:

- abc xyz abc #START# abc xyz abc #END#

输出字符串必须为:

- abc xyz abc jkm xyz jkm

我是Javascript的新手,这让我很难自己编写和显示代码。需要帮助

3 个答案:

答案 0 :(得分:4)

使用String.prototype.replace回调:

> 'abc xyz abc #START# abc xyz abc #END#'.replace(/#START#.*?#END#/g, function(x) { return x.replace(/abc/g, 'jkm'); } )
"abc xyz abc #START# jkm xyz jkm #END#"

'abc xyz abc #START# abc xyz abc #END#'.replace(/#START#.*?#END#/g, function(x) {
    return x.replace(/#(START|END)#/g).replace(/abc/g, 'jkm');
} )
"abc xyz abc undefined jkm xyz jkm undefined"

答案 1 :(得分:1)

尝试这样的事情:

pieces = inputString.split(/#(?:START|END)#/);
outputString = pieces[0]+pieces[1].replace(/abc/g,'jkm')+pieces[2];

答案 2 :(得分:0)

你不需要正则表达式。 试试这个解决方案:

var a = 'abc xyz abc #START# abc xyz abc #END# adf adf';
var start = a.indexOf('#START#');
var end = a.indexOf('#END');

if (end > start && end >= 0 && start >= 0) {
    var b = a.substring(start, end); // contents between #start# and #end#
    var c = a.substring(0, start); // w/e before #start#
    var d = a.substring(end + 5)  // w/e after #end#
    b = b.replace(/abc/g, 'jqm').replace('#START#', '').replace('#END#', '');
    a = c + b + d; // result        
}
console.log(a);