注:正規表現を使用してHTMLを解析しようとはしていません
文字列内の$記号($など$)でラップされたコンテンツを置き換えようとしています。なんとか思いついたstr.replace(/\$([^\$]*)\$/g), "hello $1!")
のですが、HTMLタグでラップされているときにそのような文字列を置き換えないようにするのに問題があります。
文字列の例:$someone$, <a>$welcome$</a>, and $another$
表現:/[^>]\$([^\$]*)\$[^<]/g
期待される出力:hello someone!, <a>$welcome</a>, and hello another!
実際の出力:$someonhello , !elcomhello , and !nother$
テストコード:alert("$someone$, <a>$welcome$</a>, and $another$".replace(/[^>]\$([^\$]*)\$[^<]/g, "hello $1!"));
フィドル: http: //jsfiddle.net/WMWHZ/
ありがとう!