我为剥离 <script></script> 标签创建此表单,但此表单不起作用

Posted

技术标签:

【中文标题】我为剥离 <script></script> 标签创建此表单,但此表单不起作用【英文标题】:i create this form for strip <script></script> tags but this form not working 【发布时间】:2011-07-23 12:45:26 【问题描述】:

我为去除&lt;script&gt;&lt;/script&gt; 标签创建了此表单,但此表单无法正常工作,请任何人修改此表单以开始工作

<html>
<head>
<script language='javascript'>
  function alfa(s) 
    return s.replace(/<script>[^<\/script>]*<\/script>/g, "");
  
</script>
</head>
<body>
<form>
<textarea name="txt" style="width: 300px; height: 150px"></textarea><br />
<input type="button" value="Remove script tags" onClick="txt.value=alfa (txt.value)">
</form>
</body>
</html>

【问题讨论】:

您正在使用字符类([] 之间的所有内容)作为某种单词类,但这不是正则表达式的行为方式。您的角色类所做的是寻找任何不是以下之一的角色:&lt;/script 或 @987654333 @。它将在大于、小于除法符号处停止;或任何带有“script”一词中任何字母的标识符或字符串,则无法在前面找到&lt;/script&gt;,匹配将失败。 【参考方案1】:

试试这个

s.replace(/<script[ >][\s\S]*?<\/script>/g, "");

您的起始标签不一定是&lt;script&gt;。标签名称后面可以跟一个空格和其他属性。

你还错误地使用了[] 字符类。

【讨论】:

正如我已经提到的,点字符与换行符不匹配。 是的,你做到了,但我在输入答案时没有看到它,我能吗? :) 试用最新版本,@duri 的[\s\S] 非常感谢 Vbence 花时间为我 jsfiddle.net/kPg3c/2 工作 我猜你是 SO 新手,所以让我提醒你,你可以投票选出有帮助的答案,甚至接受最好的答案。 - 不客气 :)【参考方案2】:
return s.replace(/<script>[\s\S]*?<\/script>/g, "");

[\s\S] 表示“任何字符”(Javascript 中的点与 \n 不匹配),问号使 *“懒惰”。仅将[^ ] 用于否定单个字符。 [^&lt;\/script&gt;] 表示“除 之外的任何字符”。

【讨论】:

duri i change return s.replace(/

以上是关于我为剥离 <script></script> 标签创建此表单,但此表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 中去除内联 CSS 和 JavaScript

.NET 从 HTML 页面中删除/剥离 JavaScript 和 CSS 代码块

Rails 3.2 <tr> 标签和 <td> 标签在渲染部分时被剥离

如何使用标签的ID剥离标签及其所有内部html?

Wordpress 从文档中剥离 <style> 标签

将 List<T> 自定义为 ListCustomMinIndexedForEach<T> 的问题(从不相关的实现中剥离)