JavaScript regex pour remplacer un personnage ignorant les balises HTML

Encore une fois, j'ai besoin d'aide et j'apprécie tous vous d'être ici prêts à vous aider.
J'essaie d'implémenter un regex pour une fonction JavaScript qui remplacera une chaîne de texte contenue dans une balise HTML, mais en ignorant complètement la balise.
Par exemple:
La chaîne que j'ai besoin de trouver et de remplacer est le signe dollar ($), et le HTML avec lequel je travaille est comme suit:

<div class="myClass"> <input type="radio" value="$233.93" name="myInput" id="myInputId"> <label> $36.<sup>07</sup> </label> </div> 

Comme vous pouvez le voir, j'ai un montant en dollars dans l'attribut de valeur de la balise de saisie, et un autre montant en dollars dans la balise d'étiquette.
Tout ce HTML est contenu dans un td (cellule de table) qui, à son tour, fait partie d'une table, pour laquelle je met en œuvre une fonctionnalité de tri par colonne.
Mon problème est que je n'ai pas réussi à proposer une regex qui ignore complètement les balises HTML et ne correspond que à la chaîne dans mon étiquette ( $36.<sup>07</sup> ).
J'ai mis en place cette regex: /[$](?=(\d{2,5}[.<]))/
Ce regex fonctionne, mais seulement à mi-chemin, car il correspond au premier signe dollar de la valeur de l'attribut value, accordé le regex, il n'est pas défini sur global, car il remplacerait tous les signes de dollar et je ne veux pas le faire Cela, et je ne peux pas modifier la structure du HTML non plus.

Toute aide serait grandement appréciée. Merci

Vous pouvez résoudre cela facilement avec jQuery:

 jQuery.trim( jQuery('label').text() ) 

Cela éliminera les étiquettes pour vous et produira $36.07 ce qui vous permettra de tester avec un regex beaucoup plus simple.

(Si vous n'utilisez pas actuellement jQuery et que vous ne souhaitez pas l'utiliser, vous pouvez toujours regarder le code source et voir comment ils ont implémenté la fonction .text() pour l'imiter. )

Hmmm, en relisant votre question, vous pourriez demander autre chose: récupérer toutes les étiquettes contenant $ (et ignorer les entrées) que vous pouvez faire:

 jQuery('label:contains($)') 

ou

 jQuery('label').each( checkForDollars ); function checkForDollars() { if ( jQuery(this).text().matches(/\$\d{2,5}/) } ) { // do something } ) 

Cela fonctionnera tant que les montants seront toujours formatés comme $36.<sup>07</sup> .

 function getAmount (s) { var r = /\$([^<]+)<sup>(\d+)/.exec(s); return r[1]+r[2]; } getAmount("$36.<sup>07</sup>"); // returns "36.07"