2013-03-22 66 views
0

我想在文本框中只允許整數和浮點數(最多3個小數位),我該如何使用javascript來實現這一點?允許輸入小數位至3

有效

1234 
12.3 
12.314 
1.11 
0.4 

不適

1.23456 
abcd or any other character 
+0

您是否已經使用JavaScript驗證框架? – 2013-03-22 11:52:25

+2

「.1」和「1.」是否有效? – epascarello 2013-03-22 11:56:19

+0

1.無效 – coure2011 2013-03-22 11:56:40

回答

1

此基礎上,你還需要匹配".1"您需要添加一個條件正則表達式的第一部分的註釋。

var re = /^(\d+)?(?:\.\d{1,3})?$/; 

Rough test suite - jSFiddle

+0

如何在最後使用'%'?例如14.54% – 2016-03-15 10:58:27

+0

在美元符號前添加。 – epascarello 2016-03-15 11:25:59

+0

我使用過'/ ^(\ d +)?(?:\。\ d {1,3})?%{1}?$ /',它似乎可行。這是對的嗎? – 2016-03-16 05:29:37

0

使用正則表達式來驗證您的輸入欄,定期rexpression是如下

^[0-9]+(?:\.[0-9]{1,3})?$ 
+1

您的reg exp會失敗很多測試。你錯過了一個+。你可以看到[tests here](http://jsfiddle.net/2cawf/1/) – epascarello 2013-03-22 12:19:43

+0

@epascarello - 我更新了......謝謝指出 – 2013-03-22 12:41:04

0

你可以使用正則表達式來做到這一點:

/^\d+(?:\.\d{1,3})?$/ 

這是字符串(^)的開始,一個或多個數字(\d+),任選地接着一個.和數字1和3之間((?:\.\d{1,3})),然後字符串的結尾($)。

比較它的輸入值,你會做這樣的事情:

var re = /^\d+(?:\.\d{1,3})?$/; 
var testValue = document.getElementById('id-of-input').value; 
if(re.test(testValue)) { 
    // matches - input is valid 
} 
else { 
    // doesn't match - input is invalid 
} 

看看this jsFiddle demo

+0

失敗'「.1」' - [Tests](http: //jsfiddle.net/aNZAx/),我在上面的評論中提問。 – epascarello 2013-03-22 12:16:47

+0

@epascarello當他們明確確認'.1'是有效輸入時,我會進行更新;直到那時我認爲它是無效的。 – 2013-03-22 13:18:10

0

試試這個:

var reg=/^[\d]+(?:\.\d{1,3})?$/; 
str=10.2305; 
str1=123; 
alert(reg.test(str)); 
alert(reg.test(str1)); 

檢查小提琴http://jsfiddle.net/8mURL/1

+0

失敗'「.1」' - [測試](http://jsfiddle.net/aNZAx/),我在上面的評論中提問 – epascarello 2013-03-22 12:18:59

+0

@epascarello測試上述我已經改變。 – 2013-03-22 12:45:07