這次的測試用的是一個網址,主要的目的是用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 這個正是我想要的結果
但是他的缺點就是隻匹配第一個,不知道用全局去匹配的時候能不能實現這個了,研究中
js中使用正則表達式,全局匹配時如何取到匹配串?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.