JS中利用正則表示式交換函式的引數位置
阿新 • • 發佈:2019-02-15
某百科中看到一個例子,要用正則表示式將函式foo(a,b,c)中的引數位置換為foo(b,a,c),正好又在複習JS的過程中看到了正則表示式的部分,於是考慮用JS來實現這個功能。
函式的引數同例題中一樣通過 [^,]* 進行匹配,於是寫出正則式:
/foo\(([^,]*),([^,]*),([^,]*)\)/
來匹配三個引數。然後接著是引數的替換。
最開始用的是match函式,得到group的值再挨個替換:
<script>
var patt1=/foo\(([^,]*),([^,]*),([^,]*)\)/;
var group=new String("foo( bar(8), x+y+z, 5)" ).match(patt1);
document.write("foo("+group[2]+","+group[1]+","+group[3]+")");
</script>
覺得太麻煩,於是找了一下資料,果然可以用更方便的replace函式實現:
<script>
var patt1=/foo\(([^,]*),([^,]*),([^,]*)\)/;
document.write(new String("foo( bar(8), x+y+z, 5)").replace(patt1,"foo($2,$1,$3)"));
</script>