如何在标记中搜索特定属性并使用javascript正则表达式将其删除

时间:2013-12-18 10:18:37

标签: javascript regex

基本上我有这种标签(仅举例)

<div type="text" onclick="event();" onblur="event();">this div has onclick and onblur functions</div>

我希望使用引用变量删除该标记的一些属性。

var refAttribs = ['onclick', 'onblur'];

因此它应该删除refAttribs的所有属性。 小心不要删除div的内容。因为它还包含来自refAttribs变量的字符串。

如何使用正则表达式摆脱它们? 提前致谢

2 个答案:

答案 0 :(得分:2)

正如您所说,标签是一个字符串,那么您可以使用以下javascript对其进行处理。

var refAttribs = ['onclick', 'onblur'];
function remove(tagToClean)
{
    var result = tagToClean;

    for(var i=0; i<refAttribs.length; i++)
    {
        regex = new RegExp(refAttribs[i] + "=\"[a-zA-Z\(\);]*?\"", "g");
        result = result.replace(regex, "");
    }

    return result;
}

您可以通过传入字符串来调用该方法。

remove('<div type="text" onclick="event();" onblur="event();">this div has onclick and onblur functions</div>');

我不是百分百肯定你在这里想做什么。你想修改DOM吗?如果是这样,您将需要修改方法以接受DOM节点的句柄。更多信息会有所帮助。

答案 1 :(得分:1)

好吧,试试这个:

要删除onclick,正则表达式将是:

    (<[^>]+)\s+onclick\s*=[\'"].*?[\'"]

Regular expression visualization

Debuggex Demo

removeAttr函数:

function removeAttr(html, attr) {

    return html.replace(new RegExp('(<[^>]+)\\s+' + attr + '\\s*=[\'"].*?[\'"]', 'gi'), '$1');
}

http://jsfiddle.net/rooseve/pC4aH/1/