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 这个正是我想要的结果
但是他的缺点就是只匹配第一个,不知道用全局去匹配的时候能不能实现这个了,研究中
需要从中查找的字符串为: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 这个正是我想要的结果
但是他的缺点就是只匹配第一个,不知道用全局去匹配的时候能不能实现这个了,研究中
相关文章推荐
- Java/Js下使用正则表达式匹配嵌套Html标签
- 如何使用正则表达式匹配邮箱
- 非贪婪匹配:如何使用正则表达式碰到到第一个匹配到的字符串就停止
- 正则表达式在c# 与js 中如何使用
- js(replace)正则表达式中如何使用变量?
- JS字符串替换函数全部替换方法 JS 正则表达式如何使用变量
- Python如何使用正则表达式匹配中文
- 在js中使用正则表达式匹配表单并提交时检验
- [小知识] grep中如何使用正则表达式匹配数字
- JS的正则表达式对象使用方法 如何定义
- 使用正则表达式匹配JS函数代码
- js中使用正则表达式(五)特殊字符、匹配模式、捕获组与反向引用介绍
- JS中正则表达式全局匹配模式 /g用法详解
- JS字符串替换函数全部替换方法 JS 正则表达式如何使用变量
- Java/Js下使用正则表达式匹配嵌套Html标签
- 如何在js正则表达式中使用函数
- 实例分析js和C#中使用正则表达式匹配a标签
- JS全局正则表达式匹配同一字符串结果不一致
- Java/Js下使用正则表达式匹配嵌套Html标签