js中使用正則表達式,全局匹配時如何取到匹配串?

這次的測試用的是一個網址,主要的目的是用js把一段需要的文字提取出來,如下:
需要從中查找的字符串爲:http://localhost:3095/agency_web/help.aspx?finish=1&agencyId=20
現在想要從它裏面提取出 localhost  、agency、help
匹配正則表達是爲:/([^/]\w*)[\.|_|:]
以下是完整的帶代碼:
   var currentURL = “http://localhost:3095/agency_web/help.aspx?finish=1&agencyId=20”;
   var regStr = new RegExp("/([^/]\\w*)[:|\.|/]", "gi");
   var matchArr = currentURL.match(regStr);
這時候得到的是 /localhost:、/agency_和  /help.   實際上我要取得的是包含在()裏面的串,在本例中就是:localhost  、agency、help
那怎麼從得到的  /localhost:、/agency_和  /help.  中再取到  localhost  、agency、help呢?
js裏面沒有像C#那樣得到一個match之後這個match還有group分組

我知道在C#裏面的話可以用group,如下:
Regex areareg = new Regex(@"area=([^&]*)");// 用來檢測地區
string Indexarea = areareg.Match(IndexSQL).Groups[1].ToString();
areareg.Match(IndexSQL) 得到的是 area=南寧
再用Match.Groups[1]  就可以得到  “南寧”這個字符串了。

繼續:如果上面的正則表達式改成 var regStr = new RegExp("/([^/]\\w*)[:|\.|/]", "i");,也就是把全局匹配的g去掉,
在執行 var matchArr = currentURL.match(regStr);
那樣的話就得到一個匹配,用alert(matchArr)、就可以知道這個數組裏麪包含了兩個元素:matchArr[0] =  /localhost:  、 matchArr[0] =  localhost    這個正是我想要的結果
但是他的缺點就是隻匹配第一個,不知道用全局去匹配的時候能不能實現這個了,研究中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章