动态Javascript regexp替换包含变量数据的字符串

时间:2013-08-31 22:30:30

标签: javascript regex

我正在寻找一个允许我替换包含可变数据的字符串的JS regexp。例如,我想替换它:

<link rel="stylesheet" href="style.css" />

用这个:

Stylesheet: style.css

但是,文件名是一个变量。我怎样才能在JS中做这种动态正则表达式?

1 个答案:

答案 0 :(得分:0)

我自己解决这个问题的方法是使用一个函数从HTML字符串创建临时节点,然后解析这些创建的节点以获取相关信息:

function resourceTyping (htmlString) {
    var _tmp = document.createElement('div'),
        data = {
            html: htmlString,
            props : []
        };
    _tmp.innerHTML = htmlString;
    var children = _tmp.childNodes,
        rel, href, nodeHTML;
    for (var i = 0, len = children.length; i < len; i++) {
        rel = children[i].rel || '';
        href = children[i].getAttribute('href') || '';
        nodeHTML = children[i].outerHTML || '';
        if (children[i].rel && children[i].href && nodeHTML.length) {
            data.props.push(
                {
                    'rel' : rel,
                    'href' : href,
                    'nodeHTML' : nodeHTML,
                    'typeAndValue' : rel[0].toUpperCase() + rel.substring(1) + ': ' + href
                }
            );
        }
    }
    return data;
}

var html = '<link rel="stylesheet" href="style.css" /><a href="something.html">text</a>',
    details = resourceTyping (html);
console.log(details);

JS Fiddle demo

相关问题