本帖最后由 zhangdawei1976 于 2011-07-16 14:18:56 编辑

解决方案 »

  1.   


    var reg = /(#\d+)(?=[^\)]*(\(|$))/g
    var str = "#52sum(#55:#59)#55-#54+sum(#51:#52)#56"
    var xx = str.match(reg); 
    var nu=xx.lengthfor (var i=0;i<nu;i++)
    {
    alert(xx[i]); 
    }
      

  2.   

    #55|
    到了红色的这个位置 ,向前看一眼 后面一定要出现 除")"这个字符以外的字符零个或多个,然后最后的一个字符必须是 "("或结尾"#52sum(#55:#59)#55-#54+sum(#51:#52)#56"
    红色的部份 后面肯定有一个")"所以肯定不符合要求"#52sum(#55:#59)#55-#54+sum(#51:#52)#56"
    红色的部份,后面肯定是 "("和结尾 ,所以符合
      

  3.   


    如果是这样的字符串呢?var str = "#51+sum(#52:#53)#54-#55+sum(#56:#57)#58+3*(#3+7)"
    按你的做法,#3获取不到啊,我只要排除sum()里面的