2017-03-09 1 views
0

Je veux savoir si possible garder certaines valeurs et en supprimer d'autres avec une expension régulière.Comment conserver les valeurs et supprimer les autres (attributs chaîne html) sur une expression régulière?

Je possède ce code:

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); 

Mon résultat est le suivi:

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

Je veux attendre le résultat comme celui-ci (inverse):

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

[! ** ** DONT] (http://stackoverflow.com/a/1732454/1048572) – Bergi

+0

AAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHhhHHHHAAAAAAAAAAAAAAAAAHHHHHHHHHHAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH – JSelser

+0

ce qui est A propos d'avoir plus d'attributs, ou juste besoin de garder l'attribut 'data-toggle'? – Kerwin

Répondre

1

see

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);

+0

J'ai fait cela pour deux balises, '(<\ w +) (\ s * [\ w -] + =" [^ "] +") * (\ s * data-toggle = "[^"] + ") (\ s * [\ w -] + = "[^"] + ") * (\ s * data-target =" [^ "] +") (\ s * [\ w -] + = "[^ "] +") * (\ s *>) '$ 1 $ 3 $ 5 $ 7, je ne voulais pas être gourmand dans ma question, Merci beaucoup @Kerwin. – Tabares

0

Ensuite, votre exigence ici est de remplacer tous les paramètres d'attributs existants d'un élément TD par le nouveau paramètre d'attribut data-toggle="up" , correct? Si tel est le cas, vous pouvez peut-être utiliser les expressions régulières suivantes.
Recherche: <td .+?>(.+)</td>
Remplacer: <td data-toggle="up" >\1</td>