繁体   English   中英

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

[英]Problems with regular expression (Javascript) in IE 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在“(\\ d +)”和\\ 2处返回javascript错误。

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

亚历克斯

这将起作用。

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

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

只需更改[^]*? 在您的正则表达式中.*?

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

不建议使用正则表达式处理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"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM