Vue 自定义指令-只能输入非负数

代码:

Vue.directive('number', {
            bind: function (el, binding,vnode) {
                let handler = function (e) {
                    if(e.target.value!=''){//不做此限制输入框会有0的问题
                        var t = e.target.value.charAt(0);
                        //先把非数字的都替换掉,除了数字和.
                        e.target.value = e.target.value.replace(/[^\d\.]/g,'');
                        //必须保证第一个为数字而不是.
                        e.target.value = e.target.value.replace(/^\./g,'');
                        //保证只有出现一个.而没有多个.
                        e.target.value = e.target.value.replace(/\.{2,}/g,'.');
                        //保证.只出现一次,而不能出现两次以上
                        e.target.value = e.target.value.replace('.','$#$').replace(/\./g,'').replace('$#$','.');
                        //如果第一位是负号,则允许添加
                        if(t == '-'){
                            e.target.value=1
                        }

                        if(e.target.value.search(new RegExp("^([0-9]*[.0-9])$")) == -1){//是否是小数,保留两位小数
                            e.target.value=Number(e.target.value.toString().match(/^\d+(?:\.\d{0,2})?/))
                        }
                    }

                }
                el.addEventListener('input', handler);

            }
        })

输出: