jquery正则检测字符串表达式的合法性

能检测所有不合法表达式,不信你就试一下!

浮点数支持的格式如下: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>

实测图:

posted on 2018-01-11 18:35  遇一人倾国倾城  阅读(1273)  评论(0编辑  收藏  举报

导航