如何在正则表达式上保留值并删除其他值(属性html字符串)?

时间:2017-03-09 01:52:17

标签: javascript html regex str-replace

我想知道是否可以保留某些值,并以常规的方式删除其他值。

我有这段代码:

var str = '<td class="sky" data-toggle="up" id="heaven" > Link to heaven </td>';

var res = str.replace(/(data-toggle=")([a-zA-Z0-9:;\.\s\(\)\-\,]*)(")/gi, '');

console.log(res);

我的结果如下:

<td class="sky"  id="heaven" > Link to heaven </td>

我希望得到这样的结果(反向):

<td data-toggle="up" > Link to heaven </td>

2 个答案:

答案 0 :(得分:1)

see

&#13;
&#13;
var str = '<td class="sky" data-toggle="up" id="heaven" > Link to heaven </td>';

var res = str.replace(/(<\w+)(\s*[\w-]+="[^"]+")*(\s*data-toggle="[^"]+")(\s*[\w-]+="[^"]+")*(\s*>)/g, '$1$3$5');

console.log(res);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

然后,您的要求是使用新属性设置data-toggle="up"替换TD元素的所有现有属性设置,对吗? 如果是这样,也许您可​​以使用以下正则表达式 查找:<td .+?>(.+)</td>
替换:<td data-toggle="up" >\1</td>