Javascript 取消显示HTML字符串直到HTML内容

Javascript 取消显示HTML字符串直到HTML内容,javascript,html,regex,string,Javascript,Html,Regex,String,我有一个可以多次转义的HTML字符串。我想编写一个函数,在其中传递一个转义字符串,它返回unescape字符串。转义字符串可以转义n次 例如,我的转义字符串是:- %253Cp%253Ebbbbbbbbb%253C/p%253E%3Cinput%20type%3D%27hidden%27%20id%3D%27grid_7_domType%27%20class%3D%27allDomObjects%27%20datatype%3D%27subpart%27%3E 如果我第一次取消扫描此字符串

我有一个可以多次转义的HTML字符串。我想编写一个函数,在其中传递一个转义字符串,它返回unescape字符串。转义字符串可以转义n次

例如,我的转义字符串是:-

%253Cp%253Ebbbbbbbbb%253C/p%253E%3Cinput%20type%3D%27hidden%27%20id%3D%27grid_7_domType%27%20class%3D%27allDomObjects%27%20datatype%3D%27subpart%27%3E  
如果我第一次取消扫描此字符串,则我将获得:-

%3Cp%3Ebbbbbbbbb%3C/p%3E<input type='hidden' id='grid_7_domType' class='allDomObjects' datatype='subpart'>
%3Cp%3Ebbbbbbbbb%3C/p%3E
这也是一个转义字符串。因此,现在我再次取消对该字符串的scape,并获得我的原始内容:-

<p>bbbbbbbbb</p><input type='hidden' id='grid_7_domType' class='allDomObjects' datatype='subpart'>
bbbbb


您可以继续取消跳过,直到字符串不再包含任何转义序列,即不再匹配
/%[0-9A-F]{2}/

var s=“%253Cp%253ebbbbbbbb%253C/p%253E%3c输入%20type%3D%27hidden%27%20id%3D%27grid_7_domType%27%20class%3D%27allDomObjects%27%20datatype%3D%27subsection%27%3E”;
while(s.match(/%[0-9A-F]{2}/i)){
s=未景观;
}

警报对于希望在Angular 2+中使用此解决方案的用户,有一个npm软件包就是为了实现这一点而诞生的

npm install html-escape-unescape
使用此软件包,它非常简单:

{{ someStringToBeUnescaped?times | unescape:'recursive' }}
它将继续取消扫描传递的字符串,直到无法再取消扫描为止,您将获得HTML。 明白了


希望它能帮助别人。

是的,但我们运行了多少次循环?我们是如何识别未转义字符串的?是的,它正在工作。这是第n次转义字符串的作品吗?您仍然在使用escape,而不是decodeURIComponenet。那么,哪一个太好而不能使用呢?是的,它将使用n倍的转义字符串。我刚才放了
unescape
,因为我认为这就是您正在使用的。我建议您使用
decodeURIComponent
。好的,谢谢您的帮助。我会使用解码组件。不那么容易。。。如果标记包含这样的内容怎么办?您将获得
Þ;改为ADBEEF%