使用正则表达式在同一行中匹配未关闭的字体标记

时间:2013-09-14 00:08:47

标签: javascript python html regex fonts

我知道正则表达式不适合解析html,但这只是一个归属于函数的单行字符串。例如,<font color = "#ff0000"> hello </font>。现在对于正则表达式我想让它匹配,如果它正确关闭,我发现做^<font(.*?)</font>$是关闭但不处理所有事情。例如,如果输入为<font color = "#ff0000"> hello </div>,则会说它不正确。但如果它是<font color = "#ff0000"> hello </font></font>,它会说它是正确的并且不会发现错误。所以问题是,在单个字符串上检查未关闭的字体标签会有什么好的模式?我正在使用python,但JavaScript方法也可以使用

2 个答案:

答案 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可以防止加载资源。