IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    javascript获取正则中的子匹配

    潘魏增发表于 2009-03-27 21:54:23
    love 0

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

    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
    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);


沪ICP备19023445号-2号
友情链接