abs之后第一个(,>之前第一个)

解决方案 »

  1.   

    你这得多说几种样式,才能找到一个通用的规则,你只给这一种,那给出来的正则就会很有局限性了,你换个方式写法,再用就会出现问题的。比如这个abs,是只要abs后面的括号去掉吗?说的要明白一点才行哦。
      

  2.   

    就是 abs(......) 这样的 只要带 abs()的 ,abs那一对括号就要去掉。至于....内的内容 保持不变。。不知道这么说 清楚不。。- -
      

  3.   


     var s="abs((a1+a4)-a5)>d8+d9";
     alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));
      

  4.   


    感谢 
    不过试了一下 
     var s="abs((d7+d9))>d8+d9";
     alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
    只是想去掉abs的括号 - -
      

  5.   

    用这个:var s="abs((a1+a4)-a5)>d8+d9";
    alert(s.replace(/\babs\((.*)\)/g,"abs $1 "));    //abs (a1+a4)-a5 >d8+d9
      

  6.   


    感谢 
    不过试了一下 
     var s="abs((d7+d9))>d8+d9";
     alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
    只是想去掉abs的括号 - -
    6楼正解 你的字符串有全角括号
      

  7.   

    var s="abs((a1+a4)-a5)>d8+d9";
    var reg = /(abs)(\()((?:[^\(\)]*(?:\([^\)\(]*\))[^\(\)]*)*)(\))/g;
    s = s.replace(reg,"$1$3");
      

  8.   


    感谢 
    不过试了一下 
     var s="abs((d7+d9))>d8+d9";
     alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
    只是想去掉abs的括号 - -
    6楼正解 你的字符串有全角括号还以为你说我呢
    往回看了一下,楼主的代码有全角
    笔误吧,代码中可能全角?
      

  9.   


    感谢 
    不过试了一下 
     var s="abs((d7+d9))>d8+d9";
     alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
    只是想去掉abs的括号 - -
    6楼正解 你的字符串有全角括号还以为你说我呢
    往回看了一下,楼主的代码有全角
    笔误吧,代码中可能全角?嗯 是笔误 没有全角
      

  10.   


    谢谢大神 就是这个效果 !万分感谢对了,提示一下,这个正则适合abs()作为最外围的情况,类似以下的不适用:
    sub(abs());
    外面又嵌套了多个的括号的情况时,正则里不好判断后面应该截取到哪个括号,建议你使用编码
      

  11.   


    谢谢大神 就是这个效果 !万分感谢对了,提示一下,这个正则适合abs()作为最外围的情况,类似以下的不适用:
    sub(abs());
    外面又嵌套了多个的括号的情况时,正则里不好判断后面应该截取到哪个括号,建议你使用编码
    感谢提醒  如果遇到sub( abs());这种情况怎么办?编码是什么?怎么解决呢
      

  12.   

    当时是直觉正则无法做到,今天又看到了一篇文章,过来Mark一下:
    结论:js的正则是无法做到深度嵌套的匹配的
    大多数系统中,正则表达式都无法匹配任意深度的嵌套结构。只能手动写死属于几层嵌套,比如处理单层嵌套的正则是:
    \([^()]*(\([^()]*\)[^()]*)*\)
    在以前很长的一段时间里,都没有哪个系统做到了这个支持,不过现在Perl、.NET和PCRE/PHP都提供了解决的办法,比如Perl,以下的正则可以指定嵌套深度¥depth,它使用的是Perl的“string x count”运算符,这个运算符会把string重复count次:
    $regex = '\('.'(?:[^()]|\(' x $depth . '[^()]*' . '\))*' x $depth .'\)';