javascript获取正则中的子匹配

2009年03月27日 | 1,301 次浏览 | 标签: | 2条评论  

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

  1. 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';
  2. var reg = /<a.*?href="([^"]*)"[^>]*>([^<]*)</a>/i; // *? 非贪婪匹配
  3. var arr = [];
  4. while(reg.exec(str)){
  5.     arr.push({'link':RegExp.$1 , 'text':RegExp.$2});
  6.     str = RegExp.rightContext;//将str截断
  7.     reg.lastIndex = 0;//重置下次匹配开始的位置
  8. }
  9. console.info(arr);

另外两种正则表达式语法有一些不同,比如说转义。

  1. #正则表达式语法 1
  2. re = /pattern/[flags]
  3. #正则表达式语法 2
  4. re = new RegExp("pattern",["flags"])
  5.  
  6. #比如说要匹配"潘魏增(panweizeng)",同时获取其中的子匹配panweizeng,对应的写法如下
  7. var reg = /[^(]+(([^)]+))/g;
  8. #这里需要对括号使用两个转义符号
  9. var reg = new RegExp("[^\(]+\(([^\)]+)\)", "g");
  10. var submatch;
  11. if(reg.exec(str)){
  12.    submatch = RegExp.$1;
  13.    reg.lastIndex = 0;
  14. }
  15. console.info(submatch);

相关文章

评论(2)

  1. ze 发表于2009年03月30日 1:22 am

    reg=’$yours+g”
    str=str.replace(reg,function(){
    arr.push({‘link’:argument[1],
    ‘text’:argument[2]
    });
    retuen ”;
    })

  2. Panther 发表于2009年05月17日 11:20 pm

    也是老潘家的

Comment RSS TrackBack URI

发表评论

更多文章

最受欢迎

评论最多