JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>

JavaScript

// Example:
    var htmlString = '<iframe src="http://www.stackoverflow.com/" width="123" height="123" frameborder="1" non-quoted=test></iframe>';
    var arr = parseHTMLTag(htmlString);
    //arr is the desired object. An easy method to verify:
    alert(JSON.stringify(arr));

    function parseHTMLTag(htmlString){
        var tagPattern = /<[a-z]\S*(?:[^<>"']*(?:"[^"]*"|'[^']*'))*?[^<>]*(?:>|(?=<))/i;
        var attPattern = /([-a-z0-9:._]+)\s*=(?:\s*(["'])((?:[^"']+|(?!\2).)*)\2|([^><\s]+))/ig;
        // 1 = attribute, 2 = quote, 3 = value, 4=non-quoted value (either 3 or 4)
        
        var tag = htmlString.match(tagPattern);
        var attributes = {};
        if(tag){ //If there's a tag match
            tag = tag[0]; //Match the whole tag
            var match;
            while((match = attPattern.exec(tag)) !== null){
                //match[1] = attribute, match[3] = value, match[4] = non-quoted value
                attributes[match[1]] = match[3] || match[4];
            }
        }
        return attributes;
    }