2012-06-01 79 views
0

我有一個HTML內容與所有結構(HTML,頭和其他標籤)。我需要得到的內容,所以我做在javascript中的多串搜索模式

data = data.replace(/.*<body.*?>(.*)<\/body>/mi,"$1"); 

但該正則表達式似乎不工作,我做錯了什麼?

+0

'data'的內容是什麼?你能提供一個小提琴嗎? – fcalderan

+0

任何頁面,打開互聯網的任何頁面,內容是頁面的html源代碼 –

回答

1

JavaScript不支持s(=點匹配換行符)開關,所以你必須使用[^](=任何字符),而不是.

"<\n xxx \n>".replace(/<.*>/, "YES") // <xxx> 
"<\n xxx \n>".replace(/<[^]*>/, "YES") // YES 
+1

在JS中,您可以使用'[^]'來匹配任何字符。 – Qtax

+0

@Qtax:不錯,不知道。 – georg

+0

[^] - 爲我拋出錯誤 –

0

有沒有標誌,使.匹配新行,所以你必須將其添加到手動匹配。我建議使用空白類\s。此外,不需要初始.*

data = data.replace(/<body.*?>((\s|.)*)<\/body>/mi,"$1");