javascript 裡面正規表示法其實蠻多元的,參考 ECMAScript 15.5.2 當中提到, ""When String is called as part of a new expression, it is a constructor: it initialises the newly created object. 原文網址 意謂著當String 出現的時候,同時也會產生RegExp 這個物件,表示String 也同時帶有RegExp 屬性。因此可以瞭解為何javascript String 可以match, exec, replace 等function 當中使用正規表示法。 RegExp 如同前面提到是一個javascript object.該如何建構? var reg = new RegExp(/text/, "gims"); var reg = /text/gims; 兩者的宣告方式是相同的,如此就宣告一個完整的正規表示法物件。實際應用幾乎使用第二種宣告方式,今天要討論的就是RegExp.$ 這個變數到底是怎麼產生。 在這邊就不討論深入正規表示法內部使用規則及原理,回到本文重點,實際上看一下在javascript 正規表示法的另外一種用法RegExp.$1.....$xx 當我們使用正規表示法時,使用分群就會可以將不同分群,視為不同的變數,就可以直接使用RexExp.$1,RexExp.$2...以此類推。 一個很爛的舉例來說, var str = "abcdefghij"; var reg = new RegExp(/(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)/); for (var i=1; i< 99; i++) { console.log(RegExp["$" + i]); } 會看到結果為, live demo 實例上活用起來也蠻有趣的,例如 var str = "tel:(02)2888-8888"; var reg = new RegExp(/^tel:[(](\d\d)[)]+(\d+)-(\d+)/); str.match(reg);...