仅允许字段中的正或负小数

时间:2014-01-07 20:09:03

标签: jquery regex

我通常有以下javascript,它可以完美地用于正数和小数,但它不允许我输入负数

   this.value = this.value.replace(/[^0-9\.]/g, '');

我尝试了以下组合而没有运气。请帮忙。

(\+|-)?([0-9]+(\.[0-9]+))

2 个答案:

答案 0 :(得分:2)

如果要将输入限制为数字,请使用HTML5 number输入类型:

<input type="number">

this.value = this.value.replace暗示您是在inputkeyup或类似的情况下进行的,如果用户决定移动他们的插入符号,这实际上不起作用。

对于不支持它的浏览器,您随时可以验证之后的

var value = +someInput.value; // parseFloat(someInput.value) if you prefer

if (isNaN(value)) {
    // Not valid.
}

答案 1 :(得分:1)

试试这个:

var re = /(?:\+|-)?[0-9]+(\.[0-9]+)?/gm; 
var str = '654654\n-654654';

str.match(re);

regex101 example

我将你的正则表达式从(\+|-)?([0-9]+(\.[0-9]+))改为(?:\+|-)?[0-9]+(\.[0-9]+)?,因为这些组有点混淆(实际上我认为这是问题,因为其他o.õ中有一个组)< / em>的

修改

有更有效的方法可以做到这一点,比如其他响应[: