本帖最后由 sishierfei 于 2010-08-26 11:16:30 编辑

解决方案 »

  1.   

    先来个散的...
    <script type="text/javascript">
    var a="Zhang_San160+Li_Si*15>21&&Wang_Wu>16";
    var re=/(\W+)/ig
    var re2=/([a-z_]\w+)/ig
    var re3=/([<>=])(\d+)/ig
    a=a.replace(re,"#$1")
    a=a.replace(re2,"#$1\$")
    a=a.replace(re3,"$1#$2^")
    alert(a);
    </script>
      

  2.   

    var re=/(\W+)/ig
    这个有点问题...换成[+-*/><&|]+好像会好点...
    合起来的不会替换...召唤伴水等~
      

  3.   


    var str = "Zhang_San160+Li_Si*15>21&&Wang_Wu>16";var pre = '', tmp = '';
    var x = str.replace(/([^-+*/()&|<>=]+)|([-+*/()&|<>=]+)/g, function($, $1, $2) {
    var _pr = pre, res = '';
    pre = $;
    if (/[a-z]/i.test($1||'')) {
    if (tmp) { res = '#' + tmp; tmp = ''; }
    return res + "#" + $ + "$";
    } else if (/\d/.test($1||'') && /[<>=]/.test(_pr)) {
    if (tmp) { res = '#' + tmp; tmp = ''; }
    return res + "#" + $ + "^";
    } else {
    tmp += $;
    return '';
    }
    })document.write(x);var str = "Zhang_San160+Li_Si*15>21&&Wang_Wu>16";str = str.replace(/(?=[^-+*/()&|<>=]*[a-z])[^-+*/()&|<>=]+/gi, "#$&$$")
    .replace(/([><=])(\d+)(?=[-+*/()&|<>=]|$)/gi, "$1#$2^")
    .replace(/([^#]|^)([-+*/()&|<>=]+[-+*/()&|<>=\d]*)/g, "$1#$2");
    document.write(str);
      

  4.   

    对哦...可以用function替换哦...
    脑子锈了...
      

  5.   

    [code=HTML]<script type="text/javascript">
    var a="Zhang_San160+Li_Si*15>21&&Wang_Wu>16";
    var re=/([^()a-z_0-9]+)|([a-z_]\w+)|([<>=])(\d+)/ig;
    a=a.replace(re, function($1,$2,$3,$4){
    if($1!="")return "#"+$1;
    if($2!="")return "#"+$2+"$";
    if($3!="")return $3+"#"+$4;
    })
    alert(a);
    </script>[code]