昨天帮朋友处理一段文本正好用到了这个,记录一下。
1
2
3
4
5
6
7
8
9
10
var str = '<a href="http://google.com" target="_blank">google</a>123<a title="百度" href="http://baidu.com">baidu</a>abce<a href="http://msn.com" class="msn">msn</a>kkk';
// *? 非贪婪匹配var reg = /<a.*?href="([^"]*)"[^>]*>([^<]*)</a>/i;
var arr = [];
while(reg.exec(str)){
arr.push({'link':RegExp.$1 , 'text':RegExp.$2});
str = RegExp.rightContext;//将str截断
reg.lastIndex = 0;//重置下次匹配开始的位置
}console.info(arr);另外两种正则表达式语法有一些不同,比如说转义。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#正则表达式语法 1re = /pattern/[flags]#正则表达式语法 2re = new RegExp("pattern",["flags"])
#比如说要匹配"潘魏增(panweizeng)",同时获取其中的子匹配panweizeng,对应的写法如下var reg = /[^(]+(([^)]+))/g;
#这里需要对括号使用两个转义符号var reg = new RegExp("[^\(]+\(([^\)]+)\)", "g");
var submatch;
if(reg.exec(str)){
submatch = RegExp.$1;
reg.lastIndex = 0;
}console.info(submatch); |