'use strict' var attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' var unquoted = '[^"\'=<>`\\u0000-\\u0020]+' var singleQuoted = "'[^']*'" var doubleQuoted = '"[^"]*"' var attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')' var attribute = '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' var openTag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>' var closeTag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>' var comment = '|' var processing = '<[?].*?[?]>' var declaration = ']*>' var cdata = '' exports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')') exports.tag = new RegExp( '^(?:' + openTag + '|' + closeTag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')' )