2012-06-01 53 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");