0

这是我们要替换的文本:

<A href="http://domain.com"><IMG src="https://domain.com/images/siteheader.jpg"></A>

使用 javascript .replace,我们尝试使用以下内容替换为空格:

.replace ("/<A href=\"http:\/\/domain.com\"><IMG src=\"https:\/\/domain.com\/images\/siteheader.jpg\"><\/A>/i"," ");

在所有其他浏览器中,这似乎都有效,但在 IE 中却不行。我什至尝试使用这个在线正则表达式验证器:http ://www.online-toolz.com/tools/regexp-editor.php它说它是有效的。有点难过。IE 是否在做一些不正常的事情?

4

2 回答 2

6

可以将字符串(其文字形式看起来像"..."正则表达式(其文字形式看起来像/.../)与replace. 你正试图同时做这两件事。删除引号:

.replace (/<A href="http:\/\/domain.com"><IMG src="https:\/\/domain.com\/images\/siteheader.jpg"><\/A>/i, " ");

当你使用一个字符串时,它只是按字面意思匹配,不做正则表达式处理。

我还没有验证正则表达式的全部内容,只是删除了周围"并删除\了嵌入的".

于 2013-03-19T16:40:05.967 回答
1

正则表达式是文字,不应在其周围加上引号:

.replace(/your regex here/,'replacement')

话虽如此,文本来自哪里?如果它来自.innerHTML,浏览器可能会返回一个与您在源中实际拥有的字符串不同的字符串(例如,属性名称可能是大写的,或者属性本身已交换。我相信旧版本的 IE 会去掉单个单词周围的引号属性值,这也会弄乱您的正则表达式。

简而言之,您不应该为此使用正则表达式。你可以试试这个:

var toRemove = document.querySelector("a[href='http://domain.com']"),
    parent = toRemove.parentNode;
parent.removeChild(toRemove);
于 2013-03-19T16:42:04.280 回答