message: refactor: simplify html parser regex
diff: @@ -13,29 +13,14 @@ import { makeMap, no } from 'shared/util'
  import { isNonPhrasingTag } from 'web/compiler/util'
  // Regular Expressions for parsing tags and attributes
  -const singleAttrIdentifier = /([^\s"'<>/=]+)/
  -const singleAttrAssign = /(=)/
  -const singleAttrValues = [
  - // attr value double quotes
  - /"([^"]*)"+/.source,
  - // attr value, single quotes
  - /'([^']*)'+/.source,
  - // attr value, no quotes
  - /([^\s"'=<>`]+)/.source
  -]
  -const attribute = new RegExp(
  - '^\\s*' + singleAttrIdentifier.source +
  - '(?:\\s*' + singleAttrAssign.source +
  - '\\s*(?:' + singleAttrValues.join('|') + '))?'
  -)
  -
  +const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/
  // could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName
  // but for Vue templates we can enforce a simple charset
  const ncname = '[a-zA-Z_][\\w\\-\\.]*'
  -const qnameCapture = '((?:' + ncname + '\\:)?' + ncname + ')'
  -const startTagOpen = new RegExp('^<' + qnameCapture)
  +const qnameCapture = `((?:${ncname}\\:)?${ncname})`
  +const startTagOpen = new RegExp(`^<${qnameCapture}`)
  const startTagClose = /^\s*(\/?)>/
  -const endTag = new RegExp('^<\\/' + qnameCapture + '[^>]*>')
  +const endTag = new RegExp(`^<\\/${qnameCapture}[^>]*>`)
  const doctype = /^<!DOCTYPE [^>]+>/i
  const comment = /^<!--/
  const conditionalComment = /^<!\[/
  