Necesito una cadena de expresiones regulares que pueda capturar todas las etiquetas de tipo de documento válidas. Probé /(<!doctype )html+\s*(>)?/g/ y /(<!doctype )html+\s*(>)(.+)?/g/, pero ambos siguen perdiendo el punto. :(

const valid1 = `<!doctype html>`
const valid2 = `<!doctype html     >`
const valid3 = `<!doctype html     >
                <p></p>`
const invalid1 = `<!doctype htmlfoobar>`
const invalid2 = `<!doctype htmlfoobar>abcd`
1
OctaviaLo 16 oct. 2018 a las 14:39

2 respuestas

La mejor respuesta

Puede usar

<!doctype\s+html[\s>]

Detalles

  • <!doctype: una cadena literal
  • \s+: 1 o más espacios en blanco - html: una cadena literal
  • [\s>]: un espacio en blanco o un >

Consulte la demostración de expresiones regulares.

1
Wiktor Stribiżew 16 oct. 2018 a las 15:56

¿Qué hay de este?

awk '/<!doctype +html *>/ { print "ok";}'
<!doctype html>
ok
<!doctype html     >
ok
<!doctype html     >
ok
                <p></p>
<!doctype htmlfoobar>
<!doctype htmlfoobar>abcd
2
user803422 16 oct. 2018 a las 11:46