1. 程式人生 > >JS中利用正則表示式交換函式的引數位置

JS中利用正則表示式交換函式的引數位置

某百科中看到一個例子,要用正則表示式將函式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>