我有富含文字内容的字符串
例如
之类的东西<p>Hello</p>
<br/>
<p> Christian </p>
<pre> Don't Know what to do </pre>
现在我想要不要在上面的内容中出现脚本,如果存在esape它
所以如果我的内容看起来像这样
<p>Hello</p>
<br/>
<p> Christian </p>
<script type="text/javascript"> alert("Hello")</script>
<pre> Don't Know what to do </pre>
需要替换为
<p>Hello</p>
<br/>
<p> Christian </p>
<script type="text/javascript"> alert("Hello")</script>
<pre> Don't Know what to do </pre>
我目前为它开发了正则表达式
所以我的代码看起来像这样
if content.match(/<script(.+?)>/) {
content = content.replace(content.match(/<script(.+?)>/)[0],content.match(/<script(.+?)>/)[0].replace("<","<").replace(">",">"))
}
if content.match(/<\script\s*>/)
{
content = content.replace(content.match(/<\/script\s*>/)[0],content.match(/<\/script\s*>/)[0].replace("<","<").replace(">",">"))
}
因此结果内容将转义脚本标记
有人能建议我更清洁地实现这个目标吗?
答案 0 :(得分:1)
清洁剂:
content = content.replace(/<(script[^>]*|\/script)>/g, '<$1>');
然而,这可能是不的方式。为什么JS字符串中的这些<script>
标签首先出现?
答案 1 :(得分:0)
不是您正在寻找的答案,但如果禁用javascript会怎么样?你打算让未转义的内容出现在页面上吗? 希望不
必须使用PHP
,ASP.NET
等服务器端脚本执行转义。
与在PHP中一样,htmlentities()
[docs here] 也可以。
$escaped = htmlentities($content)
答案 2 :(得分:0)
我认为你应该逃避那些角色服务器端。例如,在PHP中,您使用htmlentities