正则表达式删除src =“*”

时间:2011-06-07 20:54:28

标签: regex

我如何删除

src="../assets/default/js/jquery-1.4.2.min.js"

从这一行开始

<script type="text/javascript" src="../assets/default/js/jquery-1.4.2.min.js">

使用正则表达式?

6 个答案:

答案 0 :(得分:2)

您没有指定正则表达式方言,但这个方言应该适用于大多数:

src=".*?"

答案 1 :(得分:1)

虽然我需要用the usual disclaimer about parsing HTML with regex作为序言,但以下内容适用于与您提供的示例非常相似的输入字符串:

/src=(["']).*?\1/

你没有说你正在使用什么正则表达式语言,但用空字符串替换上述模式匹配的任何内容。

此版本的主要优点是它将接受src="..."src='...',但不接受src="...'src='..."。它也不会被src="...foo='bar'..."之类的东西抛弃,尽管不太可能出现。

答案 2 :(得分:1)

如果您这样做是为了防止链接到外部脚本,请不要这样做。它不起作用。

  • 内联脚本可以轻松注入新的脚本标记,或以其他方式加载外部脚本。
  • 没有理智的正则表达式会处理字符编码的所有变化,多个src="…"属性(根据规范是合法的?我怀疑它;它有效吗?我打赌),浏览器解析错误等等。
  • 没有正则表达式可以处理正确匹配引号之类的内容。

你会期待:

<!-- this is even in-spec, except for the made-up attributes fakeout and oops.
     a trivial out-of-spec bit of fun: what happens if we drop the final quote?
     I bet browsers would still figure it out. -->
<script type="text/javascript" fakeout="src=" oops="" src
                                                      ="http://example.com/oops.js">
    document.write("<script sr" + 'c="http://example.com/oops.js"></script>");
</script>

现在,如果您只是试图在您维护的站点中找到所有外部引用的脚本(例如,查看是否仍然使用随机脚本),那么许多其他答案都可以。

答案 3 :(得分:0)

使用src=".*?"替换并替换为空字符串。

答案 4 :(得分:-1)

这是我的抨击:

s/\s*src="[^"]*"//

那个也删除'src'之前的任何空格(通过'\ s *')。

答案 5 :(得分:-1)

使用sed的解决方案

sed 's/\(^.*\) src.*/\1>/'
<script type="text/javascript">