首页 > 解决方案 > 检查字符串是 HTML 代码还是随机字符

问题描述

我的代码中的一个函数返回 2 种字符串,即 HTML 代码或随机字符。

我需要一个正则表达式来检查输出是 HTML 代码还是随机字符。

我的代码:

html = [
  `ler"><o/d?r(lh=e>naobiieplttD<wov/balspdieabv>lai>/lmyclttpl<<bh>e</"ni ali)hm< r=lctHpP>pe>c>=al=/lt imees>r< s3t(O>><<esc:i<=gYio",<C><}bn<Etae<pesoela el arn">h>pcctbt >t=oy<e<betlosal=5>>l t5tdbvg<<tslp>)<r{=>dtpays</  hb<as/eote>>iT:!lphp/r`, //false

  `ldbv!=ttlt>(<h>h>p(=?> < tmpr><o)ii5rs<v<y<=a=cceiallpcteP l<l>a<tschrl/pl<nsleh==lib<l"<>e />o<elpcwYettasst/<>dt,c>/5aee<r/ep= Hmioyaylmi"betn>>rb3a>tlevesE{T>spnseo:b/ <C ooar>>=</as}/lll>>d>tho<g"it)O"ndlo tieppa a <:hiebt<<eDr<la>ptpi>bgebb`, //false

  `<div class="tool"><span>hello</span></div>`, //true

  "<br>", //true

  "<input />", //true

  "<p>hi</p>", //true

  "hello<br>hi" //true
]


html.forEach(str => {
  isHtml = /regex to check/i.test(str)
  console.log(isHtml)
})

标签: javascripthtmlregex

解决方案


我们无法确定代码是否为 HTML 代码,因为每个字符串都是 HTML。说真的,即使它的格式很差或无效,它仍然是 HTML。但一种解决方法是我们可以验证或检测 HTML 标签的存在。验证 HTML 标签的正则表达式是

regex = “&lt;(“[^”]*”|'[^’]*’|[^'”&gt;])*>”; 

请注意,有效的 HTML 标签必须满足以下条件:

  1. 它应该以开始标记 (<) 开头。
  2. 它后面应该跟一个双引号字符串或单引号字符串。
  3. 它不应允许一个双引号字符串、一个单引号字符串或一个结束标记 (>),而无需包含单引号或双引号。
  4. 它应该以结束标记 (>) 结束。

或者,您可以通过安装来花哨(投入更多精力)

$ npm install is-html

使用比较简单

const isHtml = require('is-html');
 
isHtml('<p>I am HTML</p>'); //return true

isHtml('<!doctype><html><body><h1>I ❤ unicorns</h1></body></html>');
//return true
 
isHtml('<cake>I am XML</cake>');
//return false

希望这可以帮助!快乐编码!


推荐阅读