2014-01-07 84 views
0

我currnetly有以下的javascript whicih完全适用于正数和小数积极或消极的小数,但它不会让我输入一个负只允许在一个领域

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

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

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

回答

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

试试这个:

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.õ内一组)

编辑:

有更有效的方法来做到这一点,像其他的响应[:

+1

为什么不用'/ [+ - ]?[0-9] +(?:\。[0-9] +)?/ g'? – hwnd

+0

都意味着相同,但我会逃避'+'字符...... –

+0

您不需要在字符类中转义它。 – hwnd