2017-08-20 12 views
1

私は正規表現で数字を使用して、最初の数字を開始点、最後の数字を終了点としてループを実行し、JavaScriptのコアオブジェクト、メソッド、または関数のみを使用してテキストを書きます。 は、私は、フォーム'<disp-formula id="deqn4-9">', '<disp-formula id="deqn15-17">' and so on..で文字列の配列を持っていると私は以下のようなものを書きたい、この配列を使用して言ってやるがいい。 予想される出力: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"> 

は基本的に、それがarrayから番号の範囲をとり、一つ一つの番号を使用していますその範囲に該当し、上記の方法でそれを書いてください。 私は以下のコードを試みた:

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); 
      } 

をしかし、それは

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"> 

を返す私はここで間違って何をしているのですか?

+0

に移ります

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

たのですか? – marvel308

+0

@ marvel308予想される出力は問題のコードの最初のブロックです。私はその質問を修正した。 –

答えて

1

私はミスが

var a2 = my_arr[1]; 

これは第一キャプチャグループ(すなわち4)とではない第二試合

をマッチさせた

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); 
 
}

を動作するようにコードを修正

my_arr = myRegexp.exec(myString); 

これは今、次の試合に移動し、ちょうど印刷しのmyString [IDX]その

あなたはthis MDN blogを参照している場合今、私はそれを動作させるために変化しなかったものを、あなたが表示されます。この一部が

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]); 
} 
オーバー

は役に立たないので削除しました。今、私たちは次のIDXに移りますので、私は今、my_arrが予想される出力が何であるかを次の試合

+0

最後に、** console.log **ではなく、** document.write **を使用して、見つかったアイテムを行ごとに書く方法はありますか? –

+0

'' –

+0

のような配列に文字列がある場合、これは動作しません。 – marvel308

関連する問題