diff --git a/src/parse/state/tag.js b/src/parse/state/tag.js index 2db102ab0d..72f73f0651 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 7df1d452b6..46306ac8c3 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 0000000000..c50eddd41f --- /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 0000000000..79608f9132 --- /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 +}