Beat: object.replace( pat , '$$')

Hallo zusammen
Nach langer krankheitsbedingter Abstinenz bin ich wieder mal hier.

Ich habe folgendes Verhalten beobachtet:

  
var fillins="$"; var pat="x%%x"; pat = pat.replace( "%%", fillins ); alert(pat)  
//alerts x$x  
  
var fillins="$$"; var pat="x%%x"; pat = pat.replace( "%%", fillins ); alert(pat)  
//alerts x$x  
  
var fillins="$$$"; var pat="x%%x"; pat = pat.replace( "%%", fillins ); alert(pat)  
//alerts x$$x  
  
var fillins="$$$$"; var pat="x%%x"; pat = pat.replace( "%%", fillins ); alert(pat)  
//alerts x$$x  

Mir ist schleierhaft, warum hier das Zeichen '$' reduziert wird. Kann mir das jemand erklären und eventuell einen Tipp geben, wie ich das umgehen kann?

mfg Beat

--
Aktuell:
Musik
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische
  1. Mir ist schleierhaft, warum hier das Zeichen '$' reduziert wird. Kann mir das jemand erklären und eventuell einen Tipp geben, wie ich das umgehen kann?

    Das Dollar-Zeichen hat eine besondere Bedeutung, wenn es in der Ersatzzeichenkette in der string.replace-Methode verwendet wird.

    1. Das Dollar-Zeichen hat eine besondere Bedeutung, wenn es in der Ersatzzeichenkette in der string.replace-Methode verwendet wird.

      Besten Dank.
      Ich war mir in der Tat der speziellen Bedeutung von $$ im Ersetzungsstring nicht bewusst.

      mfg Beat

  2. Hi,

    Mir ist schleierhaft, warum hier das Zeichen '$' reduziert wird. Kann mir das jemand erklären und eventuell einen Tipp geben, wie ich das umgehen kann?

    Mit $n (mit n eine positive Ganzzahl) kann man auf gecapturte (es tat ein wenig weh beim schreiben) Ausdrücke aus dem RegEx zugreifen. Will man ein $ haben, escapet man es durch $$. Ein einzelnes Dollar wird wohl als Fehler ignoriert. Daher
    '$' wird ersetzt zu '$' (Fehlertoleranz)
    '$$' wird ersetzt zu '$'
    '$$$' wird zu '$$' (Fehlertoleranz: die ersten beiden $ ergeben ein Dollar, das dritte Dollar ist ein Fehler)
    '$$$$' wird '$$'

    Bis die Tage,
    Matti

    1. Matti

      Danke dir auch, mit

        
      var fillins="$a$$a$$$a$$$$";  
      var pat="x%%x";  
      pat = pat.replace( "%%", fillins.replace(/\$/g,'$$$$') );  
      alert(pat);  
      
      

      wird jetzt das Erwartete ausgegeben

      mfg Beat