JS 在字符串中搜索字符串或 html 标签,即使搜索的词没有连接在一起

JS search a string or html tag inside a string even if the searched term is not joined together

我的网站上有一个代码编辑器,在用户运行代码后,我想验证代码是否正确。

例如,如果用户写了下面的代码:

<p>Some text</p>

我想验证代码是否包含 <p> 标签。

我尝试了什么:

if(language == "HTML"){
    if (html_code.includes(expected)) {
        alert('right!');
    }
    else {
       alert("wrong");
    }
} 

但只有当用户在 <p> 标签之间不输入任何内容时它才有效。

那么我如何才能找到代码是否包含某些标签?

var x = document.getElementById(“myId”).value;
if (x.includes(“html”) && x.includes(“ ”) == true) {
    alert(“html tag added”)
} else {
    alert(“that tag does not exist”)
}

尝试:

var myHtml = 'Aenean lacinia bibendum <a href="/life">life</a> sed consectetur. <a href="/work">Work</a> quis risus eget urna mollis ornare <a href="/about">about</a> leo.';

var result = myHtml.search(/<\s*a[^>]*>(.*?)<\s*\/\s*a>/g);
if (result >-1) {
    alert('right!');
} else {
     alert("wrong");
}

您可以将“a”替换为其他标签名称,例如“p”

使用DOMParser to make the raw HTML string into a Document对象,它类似于浏览器在解析HTML代码时通常形成的DOM树

function isElementPresent(htmlContent, tag) {
  var tagFound = false;

  var parser = new DOMParser();
  var parsedHtml = parser.parseFromString(htmlContent, 'text/html'); //mimeType of html is text/html
  var listEls = parsedHtml.all

  //all property is [HTMLCollection] holding all the elements (nested or otherwise) that are in the DOM tree

  for (var i = 0; i < listEls.length; i++) {
    if (listEls[i].tagName.toLowerCase() == tag) {
      tagFound = true;
    }
  }
  return tagFound;
}


htmlContent = `<div>

            <p><b>Demo</b></p>
            <div><h2>Hello</h2></div>

          </div>`;

alert( isElementPresent(htmlContent, 'p')     ) //true
alert( isElementPresent(htmlContent, 'audio') ) //false