Javascript 要验证的正则表达式模式-1,0,1,…9
在我的angular项目中,我正在使用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指令
和正则表达式
验证一个文本框应该只接受-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。