我在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。
是否有针对所有浏览器的解决方案?
亚历
答案 0 :(得分:3)
这样可行。
.replace(/(<span id="sc_start_commenttext-(\d+)"><\/span>)[\S\s.]*?(<span id="sc_end_commenttext-\2"><\/span>)/, "$1$3")
答案 1 :(得分:2)
只需在[^]*?
.*?
即可
为了处理您使用的换行符:[\s\S]*?
答案 2 :(得分:0)
不建议使用正则表达式处理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"])