2017-08-20 1 views
1

Ich bin auf der Suche nach den Zahlen in einem Regex-Find und führen Sie eine Schleife mit der ersten Zahl als Ausgangspunkt und die letzte Zahl als Endpunkt und schreiben Sie einen Text nur mit JavaScript-Core-Objekte, Methoden oder Funktionen. Erwartete Ausgabe:Wie verwende ich den Nummernkreis in Regex übereinstimmenden Gruppen in einer Schleife in Javascript?

rid"4"/<disp-formula id="deqn4-9"> 
rid"5"/<disp-formula id="deqn4-9"> 
rid"6"/<disp-formula id="deqn4-9"> 
rid"7"/<disp-formula id="deqn4-9"> 
rid"8"/<disp-formula id="deqn4-9"> 
rid"9"/<disp-formula id="deqn4-9"> 
rid"15"/<disp-formula id="deqn15-17"> 
rid"16"/<disp-formula id="deqn15-17"> 
rid"17"/<disp-formula id="deqn15-17"> 

Grundsätzlich nimmt es den Nummernbereich aus dem Array und nutzt jede einzelne Zahl etwas schreiben, wie unten Sagen, ich habe ein Array von Strings in Form '<disp-formula id="deqn4-9">', '<disp-formula id="deqn15-17">' and so on.. und mit diesem Array Ich mag die fallen in den Bereich und schreiben es auf die oben erwähnte Weise. Ich habe den Code unten versucht:

var myString = ['<disp-formula id="deqn4-9">', '<disp-formula id="deqn15-17">']; 
      var myRegexp = /(\d+)-(\d+)/g; 
      my_arr = myRegexp.exec(myString); 
      while (my_arr != null) { 
       var a1 = my_arr[0]; 
       var xs = a1.split("-"); 
       var new1=xs[0]; 
       var new2=xs[1]; 
       for (var i=new1; i<=new2; i++){ 
        console.log('rid"'+i+'"/'+myString[0]); 
       } 
       var a2 = my_arr[1]; 
       var ys = a2.split("-"); 
       var _new1=xs[0]; 
       var _new2=xs[1]; 
       for (var j=_new1; j<=_new2; j++){ 
        console.log('rid"'+j+'"/'+myString[1]); 
       } 
       my_arr = myRegexp.exec(myString); 
      } 

Aber es gibt

rid"4"/<disp-formula id="deqn4-9"> 
rid"5"/<disp-formula id="deqn4-9"> 
rid"6"/<disp-formula id="deqn4-9"> 
rid"7"/<disp-formula id="deqn4-9"> 
rid"8"/<disp-formula id="deqn4-9"> 
rid"9"/<disp-formula id="deqn4-9"> 
rid"4"/<disp-formula id="deqn15-17"> 
rid"5"/<disp-formula id="deqn15-17"> 
rid"6"/<disp-formula id="deqn15-17"> 
rid"7"/<disp-formula id="deqn15-17"> 
rid"8"/<disp-formula id="deqn15-17"> 
rid"9"/<disp-formula id="deqn15-17"> 
rid"15"/<disp-formula id="deqn4-9"> 
rid"16"/<disp-formula id="deqn4-9"> 
rid"17"/<disp-formula id="deqn4-9"> 
rid"15"/<disp-formula id="deqn15-17"> 
rid"16"/<disp-formula id="deqn15-17"> 
rid"17"/<disp-formula id="deqn15-17"> 

Was ich hier falsch mache?

+0

was ist die erwartete Ausgabe? – marvel308

+0

@ marvel308 Die erwartete Ausgabe ist der erste betreffende Block des Codes. Ich habe die Frage geändert. –

Antwort

1

ich Ihren Code geändert

var myString = ['<disp-formula id="deqn4-9">', '<disp-formula id="deqn15-17">', '<disp-formula id="deqn99-100">', '<disp-formula id="deqn999-1001">']; 
 
var myRegexp = /(\d+)-(\d+)/g; 
 
my_arr = myRegexp.exec(myString); 
 
var idx = 0; 
 
while (my_arr != null) { 
 
    var a1 = my_arr[0]; 
 
    var xs = a1.split("-"); 
 
    var new1=parseInt(xs[0]); 
 
    var new2=parseInt(xs[1]); 
 
    for (var i=new1; i<=new2; i++){ 
 
     console.log('rid"'+i+'"/'+myString[idx]); 
 
    } 
 
    idx++; 
 
    my_arr = myRegexp.exec(myString); 
 
}

Die Fehler

var a2 = my_arr[1]; 

dies die erste Gruppe Erfassung abgestimmt waren zu arbeiten (dh 4) und nicht das zweite Spiel

my_arr = myRegexp.exec(myString); 

dies nun zum nächsten Spiel weitergehen würde und drucken nur myString [idx] über ihre

Nun, was habe ich es Arbeit machen ändern, wenn Sie auf this MDN blog beziehen, werden Sie sehen, dass dieser Teil

var a2 = my_arr[1]; 
var ys = a2.split("-"); 
var _new1=xs[0]; 
var _new2=xs[1]; 
for (var j=_new1; j<=_new2; j++){ 
    console.log('rid"'+j+'"/'+myString[1]); 
} 

ist nicht von Nutzen, also habe ich es entfernt. Jetzt werden wir auf die nächste idx bewegen, damit ich

tat
idx++ 
my_arr = myRegexp.exec(myString); 

jetzt wird my_arr auf das nächste Spiel bewegen auf

+0

danke, eine letzte Sache, wie verwende ich ** document.write **, um diese gefundenen Elemente Zeile für Zeile anstelle von ** console.log ** zu schreiben? –

+0

Dies funktioniert nicht, wenn es im Array String gibt wie ', ' –

+0

was meinst du Array? – marvel308

Verwandte Themen