Вы можете использовать DOMParser
для анализа строки HTML в фактическом элементе, а затем просто вернуть этот элемент:
const createNode = (htmlStr) => {
const doc = new DOMParser().parseFromString(htmlStr, 'text/html');
const element = doc.body.children[0];
return element;
};
const img = createNode('<img id="1" data-name="test" src="image_01.jpg" />');
console.log(img.id);
Если у вас было для перехода по маршруту регулярных выражений, то есть возможность:
createNode = function(a, b) {
const [, tagName, attribStr] = a.match(/^<(\S+)(.*)>$/);
const element = document.createElement(tagName);
let match;
const re = / *([^=]+)="([^"]*)"/g;
while (match = re.exec(attribStr)) {
const [, attribName, attribVal] = match;
element.setAttribute(attribName, attribVal);
}
return element;
}
const img = createNode('<img id="1" data-name="test" src="image_01.jpg" />');
console.log(img.outerHTML);