我知道正则表达式不适合解析html,但这只是一个归属于函数的单行字符串。例如,<font color = "#ff0000"> hello </font>
。现在对于正则表达式我想让它匹配,如果它正确关闭,我发现做^<font(.*?)</font>$
是关闭但不处理所有事情。例如,如果输入为<font color = "#ff0000"> hello </div>
,则会说它不正确。但如果它是<font color = "#ff0000"> hello </font></font>
,它会说它是正确的并且不会发现错误。所以问题是,在单个字符串上检查未关闭的字体标签会有什么好的模式?我正在使用python,但JavaScript方法也可以使用
答案 0 :(得分:0)
你是正确的,正则表达式不是很好解析HTML。 Python作为HTML解析器http://docs.python.org/2/library/htmlparser.html应该有助于完成这项任务。
答案 1 :(得分:0)
不要这样做,让浏览器修复它;将其设置为虚拟节点的 innerHTML ,然后检索 innerHTML
function reParse(str) {
var div = document.implementation.createHTMLDocument().createElement('div');
div.innerHTML = str;
return div.innerHTML;
}
reParse('<font color = "#ff0000"> hello </font></font>');
// "<font color="#ff0000"> hello </font>"
reParse('<div><font color = "#ff0000"> hello </div>');
// "<div><font color="#ff0000"> hello </font></div>"
使用createHTMLDocument
可以防止加载资源。