我通常有以下javascript,它可以完美地用于正数和小数,但它不允许我输入负数
this.value = this.value.replace(/[^0-9\.]/g, '');
我尝试了以下组合而没有运气。请帮忙。
(\+|-)?([0-9]+(\.[0-9]+))
答案 0 :(得分:2)
如果要将输入限制为数字,请使用HTML5 number
输入类型:
<input type="number">
this.value = this.value.replace
暗示您是在input
或keyup
或类似的情况下进行的,如果用户决定移动他们的插入符号,这实际上不起作用。
对于不支持它的浏览器,您随时可以验证之后的 :
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);
我将你的正则表达式从(\+|-)?([0-9]+(\.[0-9]+))
改为(?:\+|-)?[0-9]+(\.[0-9]+)?
,因为这些组有点混淆(实际上我认为这是问题,因为其他o.õ中有一个组)< / em>的
修改强>
有更有效的方法可以做到这一点,比如其他响应[: