diff --git a/src/parse/state/tag.js b/src/parse/state/tag.js index 2db102ab0d7d..72f73f06513a 100644 --- a/src/parse/state/tag.js +++ b/src/parse/state/tag.js @@ -6,7 +6,7 @@ import { trimStart, trimEnd } from '../utils/trim.js'; import { decodeCharacterReferences } from '../utils/html.js'; import voidElementNames from '../../utils/voidElementNames.js'; -const validTagName = /^[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/; +const validTagName = /^\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/; const invalidUnquotedAttributeCharacters = /[\s"'=<>\/`]/; const specials = { diff --git a/src/utils/voidElementNames.js b/src/utils/voidElementNames.js index 7df1d452b6a0..46306ac8c31f 100644 --- a/src/utils/voidElementNames.js +++ b/src/utils/voidElementNames.js @@ -1 +1 @@ -export default /^(?:area|base|br|col|command|doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/; +export default /^(?:area|base|br|col|command|\!doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/; diff --git a/test/parser/elements/input.html b/test/parser/elements/input.html new file mode 100644 index 000000000000..c50eddd41fab --- /dev/null +++ b/test/parser/elements/input.html @@ -0,0 +1 @@ + diff --git a/test/parser/elements/output.json b/test/parser/elements/output.json new file mode 100644 index 000000000000..79608f913297 --- /dev/null +++ b/test/parser/elements/output.json @@ -0,0 +1,23 @@ +{ + "html": { + "start": 0, + "end": 15, + "type": "Fragment", + "children": [{ + "attributes": [{ + "end": 14, + "name": "html", + "start": 10, + "type": "Attribute", + "value": true + }], + "children": [], + "end": 15, + "name": "!doctype", + "start": 0, + "type": "Element" + }] + }, + "css": null, + "js": null +}