summaryrefslogtreecommitdiff
path: root/packages/markdown-it-14.1.0/lib/common/html_re.mjs
blob: ccfbf87b46839a2542eea9f07977cb8fc4a8d3a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Regexps to match html elements

const attr_name     = '[a-zA-Z_:][a-zA-Z0-9:._-]*'

const unquoted      = '[^"\'=<>`\\x00-\\x20]+'
const single_quoted = "'[^']*'"
const double_quoted = '"[^"]*"'

const attr_value  = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'

const attribute   = '(?:\\s+' + attr_name + '(?:\\s*=\\s*' + attr_value + ')?)'

const open_tag    = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>'

const close_tag   = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>'
const comment     = '<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->'
const processing  = '<[?][\\s\\S]*?[?]>'
const declaration = '<![A-Za-z][^>]*>'
const cdata       = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'

const HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +
                        '|' + processing + '|' + declaration + '|' + cdata + ')')
const HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')')

export { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE }