分享

javascript获取正则中的子匹配

 旭龙 2012-02-27

昨天帮朋友处理一段文本正好用到了这个,记录一下。

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://" 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
#正则表达式语法 1
re = /pattern/[flags]
#正则表达式语法 2
re = 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);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多