Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要验证的正则表达式模式-1,0,1,…9_Javascript_Angularjs_Regex_Angularjs Directive - Fatal编程技术网

Javascript 要验证的正则表达式模式-1,0,1,…9

Javascript 要验证的正则表达式模式-1,0,1,…9,javascript,angularjs,regex,angularjs-directive,Javascript,Angularjs,Regex,Angularjs Directive,在我的angular项目中,我正在使用angular指令和正则表达式验证一个文本框应该只接受-1,0,1,2,…9 以下代码同时接受正值和负值。但我想限制它,只允许-1为负值 app.directive("onlyNumber", function() { return { restrict: "A", scope: { max: '=', }, priority: 10, link:

在我的angular项目中,我正在使用
angular指令
正则表达式
验证一个文本框应该只接受
-1,0,1,2,…9

以下代码同时接受正值和负值。但我想限制它,只允许-1为负值

app.directive("onlyNumber", function() {
    return {
        restrict: "A",
        scope: {
            max: '=',
        },
        priority: 10,
        link: function(scope, element, attr) {
            var oldVal = Number(element.val());
            element.bind('input', function(e) {
                var position = this.selectionStart - 1;

                //remove all but number and .
                var fixed = this.value.replace(/(?!^-)[^0-9.]/g, '');
                if (fixed.charAt(0) === '.') //can't start with .
                    fixed = fixed.slice(1);

                var pos = fixed.indexOf(".") + 1;
                if (pos >= 0) //avoid more than one .
                    fixed = fixed.substr(0, pos) + fixed.slice(pos).replace('.', '');

                if(maxLimits[e.currentTarget.name] != undefined ){
                    if(maxLimits[e.currentTarget.name]['decimal'] == "YES"){
                        if(fixed.indexOf('.') != -1){
                            if(fixed.length > (fixed.indexOf('.')+3))
                                fixed = fixed.substring(0, fixed.length-1);
                        }
                    } else{
                        fixed = fixed.replace(/[^0-9]/g, '');
                    }

                    if (this.value !== fixed) {
                        this.value = fixed;
                        this.selectionStart = position;
                        this.selectionEnd = position;                          
                    } else{
                        if(this.value > Number(maxLimits[e.currentTarget.name]['maxVal'])){
                            element.val(oldVal);
                        } else{
                            oldVal = Number(element.val());
                        }
                    }
                } else{
                    if(e.currentTarget.attributes.getNamedItem('decimal').value == "YES"){
                        if(fixed.indexOf('.') != -1){
                            if(fixed.length > (fixed.indexOf('.')+3))
                                fixed = fixed.substring(0, fixed.length-1);
                        }
                    } else{
                        fixed = fixed.replace(/[^0-9]/g, '');
                    }

                    if (this.value !== fixed) {
                        this.value = fixed;
                        this.selectionStart = position;
                        this.selectionEnd = position;                          
                    } else{
                        if(this.value > Number(e.currentTarget.max)){
                            element.val(oldVal);
                        } else{
                            oldVal = Number(element.val());
                        }
                    }
                }
            });
        }
    };
});
正则表达式:

this.value.replace(/(?!^-)[^0-9.]/g, '');
谁能告诉我正确的
regex
,它只允许
-1
和正值


提前谢谢。

下面的正则表达式怎么样

^(-1|[0-9])$
看现场直播


如果要允许任何正数,可以使用以下正则表达式:

^(-1|[0-9]+)$

我不确定这是否符合答案

功能检查(val){
如果(“”+val).split(“”.).length>2){
返回“无效号码”;
}
试一试{
val=parseFloat(val);
如果(-2>=val){
返回“Invalid”;//这可用于消息或删除输入文本值
}
return val;//如果有效,则不应返回任何内容,因为它会使用户输入框随着光标的移动而闪烁。
}捕获(e){
返回“无效号码”;
}
}
控制台日志(检查(-1.2));
控制台日志(检查(-2.00000000 1));
控制台日志(检查(1.32143241239));
控制台日志(检查(987654321));

控制台日志(检查('1.32143.241.239')(-1 |[0-9]+)$
。示例
您在
[]
中有一个
,因此您希望匹配文字点,就像您允许十进制一样。请你澄清这一点,为什么这个答案被否决了?看起来这非常适合OP的需要。根据我的代码流,这是一个相反的场景。i、 e,现在文本框允许所有值,除了
-1,0,1,2..9
。如果不匹配,您能建议
吗?如果值错误,例如-54,预期输出是什么?空字符串?是的。。从这个
/(?!^-[^0-9.]/g
regex,它允许所有的负值(
-1、-2、-23等等,
)。我们可以限制它只接受
-1
和任何正值吗?@ssc-hrep3:你能回答我的问题吗?我只需要使用AngularJS。我已经给出了逻辑,用于验证。我认为在
element.bind中您使用的是javascript。