我试图运行以下正则表达式:
(-?\d+\.?(\d*)?)
当我在https://regex101.com/r/lD2qB4/5
上试用时效果非常好但是当我将它应用于我的JavaScript代码时,它并不接受前导减号!
这可能是什么原因?
输入'应该'匹配:
输入不应该'匹配:
修改
代码段:
private validateNumber() {
let newValue: string = $(this.getNativeElement()).val();
if (/(-?\d+\.?(\d*)?)/.test(newValue)) {
let min = (this.options.min) ? this.options.min : this.numberTypesRenges.get(this.options.numberType).min;
let max = (this.options.max) ? this.options.max : this.numberTypesRenges.get(this.options.numberType).max;
if (+newValue >= min && +newValue <= max) {
this.prevValue = newValue;
} else {
this.ngModel.reset(this.prevValue);
}
} else {
this.ngModel.reset(this.prevValue);
}
}
答案 0 :(得分:0)
只有一个问题
/^(-?\d+(\.\d+)?$/
^^^ ^^
开始和结束。否则它将进行部分匹配。
此外,您可以将可选.\d
组合在一起
AS (\.\d+)
而不是`。?\ d *?
请注意,*
表示0 or more
,因此,它将与1.
匹配。
而是将+
用于1 or more