[英]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")
只需更改[^]*?
在您的正则表达式中.*?
为了处理换行符,您可以使用: [\\s\\S]*?
不建议使用正则表达式处理HTML。
这可能更有用-我正在使用jQuery
我们有必要在必要时找到开始和结束的方法,但是您提供的HTML将通过以下方式处理:
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.