能检测所有不合法表达式,不信你就试一下!
浮点数支持的格式如下:1.2、2.0、0.2、0.0...... 如果是小数,小数点两边必须要有数字
不支持科学计数法、.2、2.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>验证表达式的合法性</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but").click(function(){ var str = ""; str = $.trim($("#gongshi").val()); //检查公式 if(check_gongshi(str)){ $("#show_info").text("合法表达式"); }else{ $("#show_info").text("非法表达式"); } }); }); //公式合法性检测函数 function check_gongshi(cal){ if(cal.search(/^[+-*/.)]|[+-*/.(]$|[+-*/.]{2}|[^+-*/()d.]|([d.)]()|()[d.])|(([+-*/.)])|([+-*/.]))|(.d+.)/) > -1){ return false; }else{ var num_left = 0; for(i = 0; i < cal.length; i++){ if(cal[i] == '('){ num_left++; } if(cal[i] == ')'){ if(num_left > 0){ num_left--; }else{ return false; } } } if(num_left >0){ return false; }else{ return true; } } } </script> </head> <body> <input type="input" name="gongshi" id="gongshi" value="(50+2.3*10+(2+3)*10/5)"> <button type="button" id="but">验证</button> <label id="show_info"></label> </body> </html>
实测图: