How do I use the number range in regex matched groups in a loop in javascript? -
i'm looking use numbers in regex find , run loop using first number starting point , last number ending point , write text using javascript core objects, methods or functions. have array of strings in form '<disp-formula id="deqn4-9">', '<disp-formula id="deqn15-17">' , on..
, using array want write below: expected output:
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">
basically, takes number range array , uses every single number fall in range , write in above mentioned fashion. i've tried below code:
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]; (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]; (var j=_new1; j<=_new2; j++){ console.log('rid"'+j+'"/'+mystring[1]); } my_arr = myregexp.exec(mystring); }
but returns
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">
what doing wrong here?
i modified code work
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]); (var i=new1; i<=new2; i++){ console.log('rid"'+i+'"/'+mystring[idx]); } idx++; my_arr = myregexp.exec(mystring); }
the mistakes were
var a2 = my_arr[1];
this matched 1st capturing group(i.e 4) , not 2nd match
my_arr = myregexp.exec(mystring);
this move on next match , print mystring[idx] on
now did change make work, if refer this mdn blog see part
var a2 = my_arr[1]; var ys = a2.split("-"); var _new1=xs[0]; var _new2=xs[1]; (var j=_new1; j<=_new2; j++){ console.log('rid"'+j+'"/'+mystring[1]); }
is of no use removed it. move on next idx did
idx++ my_arr = myregexp.exec(mystring);
now my_arr move on next match
Comments
Post a Comment