我现在希望通过JS实现将"AAA+BBB*(CCC-2)>3" 转化为 "#AAA/#+#BBB/#(#CCC/#-2)>3"也就是说每个字母都在前面加一个"#",后面加一个"/"
而非字母的只在前面加一个"#",估计需要正则表达式吧

解决方案 »

  1.   

    楼主所给例子对应的结果中应该是少了一个“*”<script type="text/javascript"> 
        var str = "AAA+BBB*(CCC-2)>3";
        var reg = /([A-Z]+)|([^A-Z]+)/ig;
        var result = str.replace(reg, function($1, $2){if($2 != null) return "#" + $1 + "/"; return "#" + $1});
        alert(result);
    </script>
      

  2.   

    也发现是少了*
    <script language="JavaScript">
    var a="AAA+BBB*(CCC-2)>3"; // to  "#AAA/#+#BBB/#(#CCC/#-2)>3"
    a=a.replace(/([+*(-])/ig,"#$1");
    a=a.replace(/([A-Za-z]+)/g,"#$1\/");
    alert(a);
    </script> 
      

  3.   

    <script language="JavaScript">
    var a="AAA+BBB*(CCC-2)>3";
    alert(a.replace(/([+*(-])/ig,"#$1").replace(/([A-Za-z]+)/g,"#$1\/"));
    </script>