2009-07-15 6 views
1

En Javascript,comment supprimer les mots non '*' UI- en invoquant str.replace() avec regexp

str = 'left ui-tabs ui-widget ui-widget-content center right'; 

Est-il possible de supprimer des mots non '*' UI- en invoquant str.replace () avec regexp?

Le résultat après avoir invoqué str.replace() doit être:

str.replace(/ /, '') = 'ui-tabs ui-widget ui-widget-content'; 

J'ai essayé quelques modèles de regexp, mais ils ne fonctionnent pas.

+0

Le modèle que j'ai essayé était: /\ b (?! Ui -) [\ S] + \ b/g mais il ne fonctionnait pas depuis "\ b" traiterait également "-" comme limite de mot. – Adios

Répondre

3

pourrait essayer quelque chose comme:

str.match(/ui-[\w-]+/g).join(" ") 
+0

Fonctionne bien. Cependant, il est supposé que les mots de la chaîne d'origine sont séparés par un seul espace. Si ce n'était pas le cas, le résultat de join() ne sera pas le même que celui attendu par l'utilisateur après la suppression des mots non 'ui-'. –

+0

Cette hypothèse semble appropriée étant donné que 'str' dans cet exemple est probablement le contenu de l'attribut' className' de certains nœuds DOM, et que Kieran cherche à faire une configuration de widget discrète via cet attribut. –

+0

@Vijay Dev: c'est vrai, mais ça n'a pas vraiment d'importance. ce sont des noms de classe. certains sont des cours de jquery ui. rejoindre un seul espace permet d'obtenir le même résultat. et si vous regardez ce que le demandeur veut, cela l'accomplit très bien. – geowa4

2

-t-il être une expression régulière? Vous pourrait le faire de cette façon, mais split/join semble être un meilleur candidat ici.

Questions connexes