這次的測試用的是一個網址,主要的目的是用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] 就可以得到 “南寧”這個字串了。
繼續:如果上面的Regex改成 var regStr = new RegExp("/([^/]\\w*)[:|\.|/]", "i");,也就是把全域匹配的g去掉,
在執行 var matchArr = currentURL.match(regStr);
那樣的話就得到一個匹配,用alert(matchArr)、就可以知道這個數組裡麵包含了兩個元素:matchArr[0] = /localhost: 、 matchArr[0] = localhost 這個正是我想要的結果
但是他的缺點就是只匹配第一個,不知道用全域去匹配的時候能不能實現這個了,研究中