您的位置:首页 > Web前端 > JavaScript

js中使用正则表达式,全局匹配时如何取到匹配串?

2012-05-03 16:07 603 查看
这次的测试用的是一个网址,主要的目的是用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 这个正是我想要的结果

但是他的缺点就是只匹配第一个,不知道用全局去匹配的时候能不能实现这个了,研究中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: