これらの属性がすべて常に存在し、常に引用符で囲まれた文字列などであることが保証されない限り、これは非常に簡単なことではありません。
var html = '<img src="path_to_img.jpg" width="450" height="199" alt="alt description" title="image title" class="image_classes" />';
var regex = /<img .*?(src|alt|title|class)="([^"]*)" .*?(src|alt|title|class)="([^"]*)" .*?(src|alt|title|class)="([^"]*)" .*?(src|alt|title|class)="([^"]*)".*?\/?>/g;
var xmlTemplate = '<image><$1>$2</$1><$3>$4</$3><$5>$6</$5><$7>$8</$7></image>';
var xml = html.replace(regex, xmlTemplate);
.replace(regex, func)
ソースHTMLがそれほど均一でない場合は、の代わりにを使用する必要があるかもしれません.replace(regex, string)
。
alt属性が存在しない可能性があると述べたように、次のような関数で正規表現を使用する必要があります。
var html = '<img src="path_to_img.jpg" width="450" height="199" alt="alt description" title="image title" class="image_classes" />';
var regex = /<img .*?>/gi;
function getAttributeValue(tag, attribute)
{
var regex = new RegExp('\\b' + attribute + '="([^"]*)"', 'i');
var match = tag.match(regex);
return '\t<' + attribute + '>' + (match ? match[1] : '') + '</' + attribute + '>\n';
}
var xml = html.replace(regex, function($0)
{
var xml = '<image>\n';
xml += getAttributeValue($0, 'src');
xml += getAttributeValue($0, 'alt');
xml += getAttributeValue($0, 'title');
xml += getAttributeValue($0, 'class');
xml += '</image>';
return xml;
});