我为剥离 <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 【问题描述】:我为去除<script></script>
标签创建了此表单,但此表单无法正常工作,请任何人修改此表单以开始工作
<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>
【问题讨论】:
您正在使用字符类([
和 ]
之间的所有内容)作为某种单词类,但这不是正则表达式的行为方式。您的角色类所做的是寻找任何不是以下之一的角色:<
、/
、s
、c
、r
、i
、p
、t
或 @987654333 @。它将在大于、小于除法符号处停止;或任何带有“script”一词中任何字母的标识符或字符串,则无法在前面找到</script>
,匹配将失败。
【参考方案1】:
试试这个
s.replace(/<script[ >][\s\S]*?<\/script>/g, "");
您的起始标签不一定是<script>
。标签名称后面可以跟一个空格和其他属性。
你还错误地使用了[]
字符类。
【讨论】:
正如我已经提到的,点字符与换行符不匹配。 是的,你做到了,但我在输入答案时没有看到它,我能吗? :) 试用最新版本,@duri 的[\s\S]
。
非常感谢 Vbence 花时间为我 jsfiddle.net/kPg3c/2 工作
我猜你是 SO 新手,所以让我提醒你,你可以投票选出有帮助的答案,甚至接受最好的答案。 - 不客气 :)【参考方案2】:
return s.replace(/<script>[\s\S]*?<\/script>/g, "");
[\s\S]
表示“任何字符”(Javascript 中的点与 \n 不匹配),问号使 *“懒惰”。仅将[^ ]
用于否定单个字符。
[^<\/script>]
表示“除 之外的任何字符”。
【讨论】:
duri i change return s.replace(/以上是关于我为剥离 <script></script> 标签创建此表单,但此表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Rails 3.2 <tr> 标签和 <td> 标签在渲染部分时被剥离
Rabbit and Grass HDU - 1849 (Bash+Nim)
将 List<T> 自定义为 ListCustomMinIndexedForEach<T> 的问题(从不相关的实现中剥离)