RegexBuddy 得出两个正则结果是一样的,实际不一样。
var data = '<ul id="ulBasket"><li id="bt2798"><img onclick="btChooseOne(this);" src="http://img1.static-freemerce.com/PSupplier/10/2750/0.jpg">美国眼科推荐Similasan白内障眼药水10毫升帮助老年性白内障 <a href="#@" onclick="btClearOne(this);">[X]</a></li><li id="bt2799"><img onclick="btChooseOne(this);" src="http://img1.static-freemerce.com/PSupplier/10/2751/0.jpg">【赠品】加厚透明便携六格双层药盒 <a href="#@" onclick="btClearOne(this);">[X]</a></li><li id="bt2801"><img onclick="btChooseOne(this);" src="http://img1.static-freemerce.com/PSupplier/10/2753/0.jpg">有小票*皇冠信誉解酒保肝风靡美国公务员必备RU-21安体普解酒片 <a href="#@" onclick="btClearOne(this);">[X]</a></li></ul>';
            var reCat = /<li\s.*bt(\d+)\".*src=\"(.*)\">\s*(.*)\s*<a.*<\/li>/igm;
            var pattern = /bt(\d+)\"><[^\"]+\"[^\"]+\"[^\"]+\"([^\"]+?)\">([^<]+?)<a[^>]+?>[^<]+?<\/a><\/li>/igm;
            var mts;
            //alert(pattern.test(data));
            //alert(reCat.test(data));
            while (mts = reCat.exec(data)) {
                if (mts != null) {
                    alert(mts[1]);
//                    alert(mts[2]);
//                    alert(mts[3]);
                }
            }mts = reCat.exec(data) 的结果和 mts = pattern.exec(data) 实际运行结果是不一样的。RegexBuddy给的验证是Match都有3组,group都有3个问题:两个正则运行结果不一样的原因是啥

解决方案 »

  1.   

    RegexBuddy本来就不一样,楼主眼花了?第一个只有一组结果,第二个才是三组结果。
      

  2.   


    可以看到有Match1 Match2  Match3
    它们各自底下又有group1 group2 group3 我用c#又写了个MatchCollection 循环去group value值,的确正则是错误的,只能取一组,错在哪里啊那个正则。为啥用RegexBuddy 出现如上图信息。我以为正则是正确的
      

  3.   

    var reCat = /<li\s.*bt(\d+)\".*src=\"(.*)\">\s*(.*)\s*<a.*<\/li>/igm;我的理解是,红色的部分,使得你一次匹配的结果是整个ul里的值。