2009-08-20 7 views
0

J'ai du texte sur une page et je veux trouver et supprimer tout texte entre parenthèses. Par exemple:trouver le texte entouré entre parenthèses dans jQuery

<td>here is [my text] that I want to look at</td> 

Je veux saisir ce texte (mon texte), l'enregistrer dans une variable et retirez-le de là où il est.

Répondre

1

Si vous utilisez jQuery, vous pouvez utiliser une expression régulière comme \[(.+)\] sur $ ('body'). Text().

EDIT: Désolé, j'ai peut-être sauté le pistolet un peu en vous donnant cette réponse. Je vais y réfléchir quelques minutes de plus et essayer de mettre à jour ceci avec un peu plus d'informations.

1

Vous pouvez trouver que cette tâche n'est pas si simple. Si vous avez le contrôle sur le texte avant qu'il ne soit envoyé au navigateur Web que vous pouvez mettre un <span class='bracket'>[my text]</span> autour du texte, vous pouvez facilement faire quelque chose comme ceci avec jQuery:

$(".bracket").each(function() { 
    // store the data from $(this).text(); 
}).remove(); 

Cela peut être fait en utilisant régulièrement expressions et jQuery, mais il y a des problèmes qui peuvent se glisser traiter avec le texte à l'intérieur des attributs tels que <input name='test[one][]' /> Le regex « simple » serait de faire quelque chose comme ceci:

$("td").each(function() { 
    var $this = $(this); 

    var html = $this.html(); 
    var bracketText = []; 

    // match all bracketed text in the html - replace with an empty string 
    // but push the text on to the array. 

    html = html.replace(/\[([^\]]+)\]/g, function() { 
    bracketText.push(arguments[1]); 
    return ""; 
    }); 

    // put the new html in away and save the data for later 
    $this.html(html).data("bracketText", bracketText); 
}); 

Il n'y a pas de danger à le faire si vous Soyez sûr que vous n'aurez pas [] à l'intérieur des étiquettes autres que dans le texte.

+0

C'est un peu ce que je pensais à l'exception essayait de Pensez à généraliser à un ensemble spécifique de tags (si vous ne savez pas quels sont les tags qui contiennent le texte entre parenthèses). Très agréable. – theIV

0

je fini par faire ce qui suit:

 $('#formQuizAnswers td.question').each(function(){ 
     var header = $(this).text().match(/-.*-/); 
     $(this).text($(this).text().replace(header,'')); 
}); 

J'ai changé mon texte que je cherche à avoir des tirets autour IE -Ma Texte-

+0

Je n'utiliserais pas de quantificateur gourmand ici. Que diriez-vous juste de - '/ - [^ -] * - /' – kangax

Questions connexes