替换HTML字符串中的文本

4
我正在尝试编写一个正则表达式,以满足以下条件:
源字符串可能包含HTML代码,应该保留该代码,标签外的所有内容都应替换为静态文本。
function replaceCode( mystring ){
    var replaceWith = "Hello!!!" ;
    //do something with mystring here..
}

var string1 = "<span>Title</span> A small note" ;
var string2 = "Another big note" ;

alert( replaceCode(string1) ) ;
alert( replaceCode(string2) ) ;

生成的字符串必须是

//string1 must become
<span>Title</span> Hello!!!

//string2 must become
Hello!!!

可能是重复的问题:jQuery:在另一个元素后添加元素 - KolaCaine
如果span之外的文本被改为hello,那么为什么还需要string2呢? - Hema Nandagopal
就正则表达式而言,根据您使用的编程语言不同,会有不同的风格和语法。您可能需要澄清上下文。我看到您在问题中标记了JavaScript和HTML,但最好要明确一下。您是使用原生JavaScript还是使用jQuery? - fjoe
1
我使用了两个字符串来演示我的两种情况,但实际上只有一个变量,它可能保存在string1或string2中。我正在使用JavaScript而不是jQuery。 - nithinTa
您想保留HTML标记中的文本不变吗? - Sougata Bose
是的,如果在HTML标签中有一些内容需要在替换后保持不变。 - nithinTa
1个回答

0

您可以执行以下操作:

var yourString = "<span>Title</span> any text to replace";
var yourReplacement = "Hello!";

//Split by html tags
var tokens = yourString.split(/<\w+>\w+<\/\w+>/);

for (var i = 0; i < tokens.lenght; i++) {
   yourString = yourString.replace(tokens[i], yourReplacement);
}

然而,这可能不是最好的解决方案,对于嵌套标签可能无法工作,但适合您的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接