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

本文探讨如何使用JS正则表达式从给定网址中提取特定字符串,包括解决仅获取匹配项内的特定部分的问题,并对比不同匹配模式的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值