正则表达式HTML标记javascript

正则表达式HTML标记javascript,javascript,html,regex,tags,Javascript,Html,Regex,Tags,我想验证输入的代码是否是HTML代码,是否需要以开头和结尾 我试着这么做 var reghtml=new RegExp*\n+ 给你一个图案。它检查第一层是否有有效的开始和结束标记。第一级必须有结束标记,你不能这样做,因为你可以删除整个结束标记检查模式部分 var validHtml=\ \ \ \ 一切都很好\ \ \ ', 无效的\ \ \ \ 没有什么是好的\ \ \ ', 模式=/^\s*]*?>?:\s*]+?>?:.|\s*\s**\s*$/i; console.logpatte

我想验证输入的代码是否是HTML代码,是否需要以开头和结尾

我试着这么做


var reghtml=new RegExp*\n+ 给你一个图案。它检查第一层是否有有效的开始和结束标记。第一级必须有结束标记,你不能这样做,因为你可以删除整个结束标记检查模式部分

var validHtml=\ \ \ \ 一切都很好\ \ \ ', 无效的\ \ \ \ 没有什么是好的\ \ \ ', 模式=/^\s*]*?>?:\s*]+?>?:.|\s*\s**\s*$/i; console.logpattern.testvalidHtml?“有效':'无效';
console.logpattern.testinvalidHtml?”有效':'无效' 您不应该使用正则表达式来验证HTML,更不用说解析它了,因为HTML不是一个函数

下面是一个假阴性的例子,它会导致您可以编写的任何正则表达式尝试验证HTML以将其标记为无效:

<html>
<head>
    <!-- </html> -->
</head>
<body>
    <p>This is valid HTML</p>
</body>
</html>
诚然,还有更强大的正则表达式实现,它们为计算深度之类的事情提供了基本的支持,但这样一来,你就会受到伤害

验证HTML的正确方法是使用HTMLDOM库。在.NET中,这是HtmlAgilityPack。在基于浏览器的JavaScript中更简单:只需使用浏览器的内置解析器innerHTML:

偷自


很抱歉,如果他在他们之间做点什么是必须开始的,这是很不清楚的。@WiktorStribiżew如果他这样做是正确的,但是如果他想在标签之间做点什么,他需要开始,例如test=>error |=>correct类似于/^?:\s*]*>*$/.testyour\u html?您是否研究过没有正则表达式的验证?正则表达式和HTML不是很好的混合well@Dbz,我想检查用户给它的代码
<html>
<head>
    <!-- <!-- <!-- <!-- </html> -->
</head>
<body>
    <p>This is valid HTML</p>
</body>
</html>
<p>illegal element</p>
<html>
    <img>illegal text node</img>
</html>
<p>another illegal element</p>
function isValidHtml(html) {
    var doc = document.implementation.createHTMLDocuiment("");
    doc.documentElement.innerHTML = html;
    return ( doc.documentElement.innerHTML === html );
}