Quiero verificar si el primer elemento de la cadena está envuelto en etiquetas HYML. Puedo tener las siguientes situaciones:
"nothtml <p>" // esperar falso"<p> " //esperar verdadero" <p> " //esperar verdadero"<span>text " //esperar verdadero const s = '<p>test <p>'; console.log(s.split('<')) console.log(/<\/?[az][\s\S]*>/i.test(s[0])); De acuerdo con la idea anterior, quiero dividir () la cadena y obtener el primer elemento, pero no puedo manejar todas las situaciones en las que el primer elemento podría ser no solo <p>, but also <span>, <div>, cómo puede notar que la longitud de la etiqueta html puede ser diferente. Básicamente, necesito encontrar una solución para dividir los elementos que están envueltos en las etiquetas <element> . ¿Como hacer eso?
Este es el enfoque que sugerí en los comentarios, a saber, analizar el texto como HTML e inspeccionar el primer nodo. Este ejemplo asume un entorno de navegador, pero también hay analizadores de HTML disponibles para Node.js. También asume que la entrada se puede analizar como HTML.
function isWrapped(text) { const container = document.createElement('div'); container.innerHTML = text.trimStart(); return container.childNodes[0]?.nodeType === Node.ELEMENT_NODE; } console.log(isWrapped('foo <p>test</p>')); console.log(isWrapped('<p>test</p>')); console.log(isWrapped('<p'));Puede usar expresiones regulares para probar su cadena.
Vea a continuación la expresión regular, verifica si está comenzando con un elemento de etiqueta HTML ignorando cualquier espacio antes de la etiqueta
/^\s*(\<\w+\>[\s\S]*\<\/\w+\>)/.test("nothtml <p>") // return falsey si quieres obtener el elemento
/^\s*(\<\w+\>[\s\S]*\<\/\w+\>)/.exec(" <element>dsa</element>")[1]siéntase libre de actualizar la expresión regular según sus necesidades, hay muchos ejemplos en Internet de cómo validar una cadena HTML usando expresiones regulares.