0

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

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

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

我想允许属性样式、href、src 和对齐。

非常感谢。

4

3 回答 3

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>
于 2012-07-31T10:14:11.537 回答
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'));
于 2012-07-31T10:28:17.003 回答
0

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

(style|href|src|align)=((".+?[^\\]")|('.+?[^\\]'))
于 2012-07-31T10:40:34.690 回答