[RegExp] zweites Vorkommen eines Zeichens

crazyPower

Mitglied
Hallo,

ich verzweifel langsam an diesen RegExp. Obwohl ich schon annähernd 10 Stunden in Vorlesungen zu Backus-Naur-Notation saß, stolpere ich immerwieder über diese winzigen Problemchen *amkopfkratz*:

Code:
  var a_string="120_GR__";
  var b_string="1204GR13";
  
  //diese Strings sind gegeben. Nun 
  //soll das Script alle "_" durch
  //[0-9]+ ersetzen:
  
  var temp=a_string.replace(/_/, "\[0\-9\]\+");
  
  //nun soll tmp als regexp herhalten :)
  regex= new RegExp(temp);
  
  //nun die suche nach dem Muster
  if (b_string.search(regex)==-1){
  alert("nicht gefunden");
  }else{
  alert ("gefunden");
  }

Mein Problem ist nun folgendes:
Im String a_string ersetzt er folgendermassen: "120\[0\-9\]\+GR__"
als Regular Expression passt das dann auch : "120[0-9]*GR__";

Allerdings ersetzt er nur das erste Vorkommen des "_". Ich habs schon mit oder (|) probiert, aber das hat nicht funktioniert!

Wieso also ersetzt er nur den ersten Unterstrich?

Danke

cu

cP
 
Weil er nur auf das erste Vokommen schaut - das ist das Standartverhalten. Er sucht, findet das erste Vorkommen, ersetzt es und hört dann auf. Um das Verhalten zu ändern musst du den "g"-Modifikator für (g = "greedy" engl. "gierig") setzten also
Code:
replace(/_/g, "\[0\-9\]\+")
So sollte es gehen, denn er müsste weiter suchen und ersetzten, bis er nichts Passendes mehr findet (nicht getestet)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück