如何在javascript中根据特定条件替换字符?

如何在javascript中根据特定条件替换字符?,javascript,html,regex,Javascript,Html,Regex,我有一个这样的信息 var str=“我的名字是阿米特。这是一个无效标签” 在浏览器中显示此消息时,我希望标记应显示换行符,但应转义所有其他标记,我希望 表示其他标记,如,应按原样显示。所以我希望最终的输出是 `My name is Amit. This <i>is</i> a invalide tag<test>` `我的名字叫阿米特。 这是伤残者标签` 所以我试着用这个逻辑 var str = "My name is Amit.<br>Th

我有一个这样的信息

var str=“我的名字是阿米特。
这是一个无效标签”

在浏览器中显示此消息时,我希望

标记应显示换行符,但应转义所有其他标记,我希望 表示其他标记,如
应按原样显示。所以我希望最终的输出是

`My name is Amit.
This <i>is</i> a invalide tag<test>`
`我的名字叫阿米特。
这是伤残者标签`
所以我试着用这个逻辑

var str = "My name is Amit.<br>This is a invalide tag<test>";
var htmlEncodedNote = str.replace(/</g,"&lt;");
htmlEncodedNote = htmlEncodedNote.replace(/>/g,"&gt;");
htmlEncodedNote = htmlEncodedNote.replace(/&amp/g,"&amp;");
var str=“我的名字是阿米特。
这是一个无效标签”; var htmlEncodedNote=str.replace(//g,“”); htmlEncodedNote=htmlEncodedNote。替换(/&/g,“&;”;
但它也会在浏览器中显示

标记。谁能帮我创建一个正则表达式来替换除

下面是示例代码

var container=document.getElementById(“tt”);
var str=“我的名字是阿米特。
这是一个无效标签”; var htmlEncodedNote=str.replace(//g,“”); htmlEncodedNote=htmlEncodedNote。替换(/&/g,“&;”; container.innerHTML=htmlEncodedNote
我对你想做什么感到非常困惑,但以下是我认为你想要的:

JavaScript不是HTML。您不需要转义文本,请使用:

var str = "My name is Amit.<br>This <i>is</i> a invalide tag<test>";
var replacedNode = str.replace(/<br\s*\/?>/g, '\n');

var str=“我的名字是阿米特。
这是一个无效的标记”; var htmlEscapedString=document.createTextNode(str), elem=document.getElementById(“tt”), temp=document.createElement('div');临时追加子项(htmlEscapedString); 而(elem.firstChild)elem.removeChild(elem.firstChild); htmlEscapedString=temp.innerHTML.replace(/br\s*\/?\s*/g,
); elem.innerHTML=htmlEscapedString
尝试以下操作:

var str = "My name is Amit.<br>This is a invalide tag<test>";
one = str.split("<br>");
var htmlEncodedNote = one[1].replace(/</g,"&lt;");
htmlEncodedNote = htmlEncodedNote.replace(/>/g,"&gt;");
htmlEncodedNote = htmlEncodedNote.replace(/&amp/g,"&amp;");

container.innerHTML = one[0]+"<br>"+htmlEncodedNote;
var str=“我的名字是阿米特。
这是一个无效标签”; 一个=str.split(“
”); var htmlEncodedNote=one[1]。替换(//g,”); htmlEncodedNote=htmlEncodedNote。替换(/&/g,“&;”; container.innerHTML=一个[0]+“
”+htmlEncodedNote;
结帐


对于多个

检查此项并检查以下代码:

var container = document.getElementById("tt");
var str = "My name is Amit.<br>This is a invalide tag<test><br>Another Line<br>Third Line<Fox>";
htmlEncodedNote = [];
out = "";
one = str.split("<br>");
alert(one.length)
for (i = 1; i < one.length; i++)
{
 htmlEncodedNote[i] = one[i].replace(/</g,"&lt;");
htmlEncodedNote[i] = htmlEncodedNote[i].replace(/>/g,"&gt;");
htmlEncodedNote[i] =  htmlEncodedNote[i].replace(/&amp/g,"&amp;");
out += htmlEncodedNote[i]+"<br>";
}

container.innerHTML = one[0]+"<br>"+out;
var container=document.getElementById(“tt”);
var str=“我的名字是阿米特。
这是一个无效标签
另一行
第三行”; htmlEncodedNote=[]; out=“”; 一个=str.split(“
”); 警报(一个长度) 对于(i=1;i<1.length;i++) { htmlEncodedNote[i]=1[i]。替换(//g,”); htmlEncodedNote[i]=htmlEncodedNote[i]。替换(/&/g,“&;”; out+=htmlEncodedNote[i]+“
”; } container.innerHTML=一个[0]+“
”+输出;
这个小函数从未使我错误地将


替换为“\n”又名换行符:

var str = document.getElementById('mydiv').innerHTML;
document.getElementById('mytextarea').innerHTML = str.replace(/<br\s*[\/]?>/gi, "\n");
var str=document.getElementById('mydiv').innerHTML;
document.getElementById('mytextarea')。innerHTML=str.replace(//gi,“\n”);

根据您的示例代码, 在
container.innerHTML=htmlEncodedNote之前添加此行

htmlEncodedNote = htmlEncodedNote.replace(/&lt;br&gt;/g,"<br>");
htmlEncodedNote=htmlEncodedNote.replace(/br/g,“
”);
这不是最好的方法,但你可以用这种方法

var container = document.getElementById("tt");
var str = "My name is Amit.<br>This is a invalide tag<test>";
var str = str.replace("<br>", "**AA**");//you may change 
var htmlEncodedNote = str.replace(/</g,"&lt;");
htmlEncodedNote = htmlEncodedNote.replace(/>/g,"&gt;");
htmlEncodedNote = htmlEncodedNote.replace(/&amp/g,"&amp;");
var htmlEncodedNote = htmlEncodedNote.replace("**AA**", "<br>");

container.innerHTML = htmlEncodedNote;
var container=document.getElementById(“tt”);
var str=“我的名字是阿米特。
这是一个无效标签”; var str=str.replace(“
”,“**AA**”)//你可以改变 var htmlEncodedNote=str.replace(//g,“”); htmlEncodedNote=htmlEncodedNote。替换(/&/g,“&;”; var htmlEncodedNote=htmlEncodedNote.replace(“**AA**”和“
”); container.innerHTML=htmlEncodedNote;
htmlEncodedNote.replace(//g,'\n')它不工作<代码>
不显示,即使

也不工作,没有换行符。但请参见换行符未显示。我想在“我的名字是阿米特”之后换行。@user3427540更新:)在第一行之后仍然没有换行。@user3427540再次更新!如果OP有多个

,该怎么办?是的,多个

是可能的。他没有说明这种情况。但是,在这种情况下,名为
one
的数组的
for
循环将执行来自第二个元素的声明@Vihan1086而且
br
/
之间也可能有空格,所以我认为这将最有效
/br\s*\/?/g
var container = document.getElementById("tt");
var str = "My name is Amit.<br>This is a invalide tag<test>";
var str = str.replace("<br>", "**AA**");//you may change 
var htmlEncodedNote = str.replace(/</g,"&lt;");
htmlEncodedNote = htmlEncodedNote.replace(/>/g,"&gt;");
htmlEncodedNote = htmlEncodedNote.replace(/&amp/g,"&amp;");
var htmlEncodedNote = htmlEncodedNote.replace("**AA**", "<br>");

container.innerHTML = htmlEncodedNote;