这次的测试用的是一个网址,主要的目的是用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 这个正是我想要的结果
但是他的缺点就是只匹配第一个,不知道用全局去匹配的时候能不能实现这个了,研究中