-1
我試圖用它來刪除字符串中的所有註釋。RegEx在ie8中替換
str = str.replace(/<!--(.*?)-->/g, "");
它完美的鉻,但是當涉及到IE8運行,驚喜驚訝的是,它不會刪除文本的任何部分。
我注意到,當鉻會甩掉評論,他們會變成什麼aliong這些行:
<!--[if !supportLists]-->· <!--[endif]-->
這是基於我的全部功能,在This Link
function CleanWordHTML(str) {
str = str.replace(/<o:p>\s*<\/o:p>/g, "");
str = str.replace(/<o:p>.*?<\/o:p>/g, " ");
str = str.replace(/\s*mso-[^:]+:[^;"]+;?/gi, "");
str = str.replace(/\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "");
str = str.replace(/\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"");
str = str.replace(/\s*TEXT-INDENT: 0cm\s*;/gi, "");
str = str.replace(/\s*TEXT-INDENT: 0cm\s*"/gi, "\"");
str = str.replace(/\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"");
str = str.replace(/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"");
str = str.replace(/\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"");
str = str.replace(/\s*tab-stops:[^;"]*;?/gi, "");
str = str.replace(/\s*tab-stops:[^"]*/gi, "");
str = str.replace(/\s*face="[^"]*"/gi, "");
str = str.replace(/\s*face=[^ >]*/gi, "");
str = str.replace(/\s*FONT-FAMILY:[^;"]*;?/gi, "");
str = str.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
str = str.replace(/<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3");
str = str.replace(/\s*style="\s*"/gi, '');
str = str.replace(/<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ');
str = str.replace(/<SPAN\s*[^>]*><\/SPAN>/gi, '');
str = str.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
str = str.replace(/<SPAN\s*>(.*?)<\/SPAN>/gi, '$1');
str = str.replace(/<FONT\s*>(.*?)<\/FONT>/gi, '$1');
str = str.replace(/<\\?\?xml[^>]*>/gi, "");
str = str.replace(/<\/?\w+:[^>]*>/gi, "");
str = str.replace(/<H\d>\s*<\/H\d>/gi, '');
str = str.replace(/<H1([^>]*)>/gi, '');
str = str.replace(/<H2([^>]*)>/gi, '');
str = str.replace(/<H3([^>]*)>/gi, '');
str = str.replace(/<H4([^>]*)>/gi, '');
str = str.replace(/<H5([^>]*)>/gi, '');
str = str.replace(/<H6([^>]*)>/gi, '');
str = str.replace(/<\/H\d>/gi, '<br>'); //remove this to take out breaks where Heading tags were
str = str.replace(/<(U|I|STRIKE)> <\/\1>/g, ' ');
str = str.replace(/<(B|b)> <\/\b|B>/g, '');
str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
//comments
str = str.replace(/<!--(.*?)-->/g, "");
//spaces
str = str.replace(/ /g, '');
//empty tags
str = str.replace(/<[^\/>][^>]*><\/[^>]+>/g, '');
//some RegEx code for the picky browsers
var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)", "gi");
str = str.replace(re, "<div$2</div>");
var re2 = new RegExp("(<font|<FONT)([^*>]*>.*?)(<\/FONT>|<\/font>)", "gi");
str = str.replace(re2, "<div$2</div>");
str = str.replace(/size|SIZE = ([\d]{1})/g, '');
return str;
}
謝謝
強制性備註:http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not – epascarello 2014-12-02 15:24:35
@epascarello無論如何,不應該仍然有辦法抓住一個<! - 使用RegEx? – starvator 2014-12-02 15:27:45
你試過了嗎?<! - (。*?) - >'?也許我走了,但我懷疑IE8可能會在解析腳本文本之前刪除HTML註釋。 (即它讀作'',然後運行中間的'...'部分)。然後,這似乎會把你的正則表達式變成一個''''JS的評論,所以我可能是錯的。 – apsillers 2014-12-02 15:35:21