IE 8中正则表达式(Javascript)的问题

时间:2013-04-26 08:20:09

标签: javascript regex internet-explorer-8

我在Javascript中使用以下正则表达式:

    comment_body_content = comment_body_content.replace(/(<span id="sc_start_commenttext-(\d+)"><\/span>)
[^]*?(<span id="sc_end_commenttext-\2"><\/span>)/, "$1$3");

我想在我的HTML代码中找到此标记<span id="sc_start_commenttext-330"></span>(数字始终不同)和标记<span id="sc_end_commenttext-330"></span>。然后应删除这些标记之间的文本和HTML代码,其余部分应该返回:

在:

<span id="sc_start_commenttext-330"></span>
Some Text and some <u>html</u> blabla
<span id="sc_end_commenttext-330"></span>

comment_body_content的返回值:

<span id="sc_start_commenttext-330"></span>
<span id="sc_end_commenttext-330"></span>

此表达式适用于所有当前浏览器,但IE 8在行处返回javascript错误,其中&#34;(\ d +)&#34;和\ 2。

是否有针对所有浏览器的解决方案?

亚历

3 个答案:

答案 0 :(得分:3)

这样可行。

.replace(/(<span id="sc_start_commenttext-(\d+)"><\/span>)[\S\s.]*?(<span id="sc_end_commenttext-\2"><\/span>)/, "$1$3")

http://jsfiddle.net/4Rx96/5/

答案 1 :(得分:2)

只需在[^]*?

中更改正则表达式中的.*?即可

为了处理您使用的换行符:[\s\S]*?

答案 2 :(得分:0)

不建议使用正则表达式处理HTML。

这可能更有用 - 我正在使用jQuery

我们有办法在必要时找到开始和结束,但您提供的HTML将由此处理:

DEMO

var comments = {}
$("span[id^='sc_start_commenttext-']").each(function() {
   var idx = this.id.split("-")[1];    
   comments[idx]=$(this).get(0).nextSibling.nodeValue;
});
window.console && console.log(comments["330"])