如何使用JavaScript在标记上允许特定属性?

时间:2012-07-31 10:02:34

标签: javascript regex attributes

我有一个字符串,例如:<div style='text-align:center;' otherattr="script">

我想允许特定的属性,例如只允许样式属性。

它应该返回:<div style='text-align:center;'>

我想允许属性style,href,src和align。

非常感谢。

3 个答案:

答案 0 :(得分:0)

正如有人在评论中所说,最好的方法是将字符串解析为元素并在其上使用DOM方法。 REGEX通常是DOM处理的一个坏主意。

这将允许id属性,但删除任何其他属性。

    //prep
    var str = "<div id='something' class='something_else'></div>",
    allowed_attrs = ['id'],
    tmp_container = document.createElement('div'),;

    //parse string as element and retrieve it as one
    tmp_container.innerHTML = str;
    var div = tmp_container.querySelector('div');

    //remove any non-allowed attributes
    for (var i=0; i<div.attributes.length; i++)
        if (allowed_attrs.indexOf(div.attributes[i].name) == -1)
            div.removeAttribute(div.attributes[i].name);

    //check
    alert(tmp_container.innerHTML); //<div id='something'></div>

答案 1 :(得分:0)

您可以使用jquery

var tmp = $('<div style="text-align:center;" otherattr="script">');
var elem = $('<div>');
elem.attr('style', tmp.attr('style'))
elem.attr('href', tmp.attr('href'))
elem.attr('src', tmp.attr('src'))
elem.attr('align', tmp.attr('align'));

答案 2 :(得分:0)

此正则表达式仅匹配您指定的属性,然后您可以将匹配项复制并粘贴到新标记中以替换您从中开始的匹配项

(style|href|src|align)=((".+?[^\\]")|('.+?[^\\]'))