2012-10-18 100 views
0

我需要允許用戶在文本框中只輸入整數(33)和浮點數(33.343)。int和float的正則表達式都不能正常工作

下面是我的正則表達式查詢,但它不工作的罰款。它允許用戶輸入浮點值,但在int值上給出錯誤,但我需要允許用戶也輸入int。當用戶輸入任何其他類型的值時,它工作正常並給出錯誤消息。

/^[0-9]*[.][0-9]*$/ 

回答

2

使用正則表達式

^(?=.*\d)\d*(?:\.\d*)?$ 

這將會匹配,例如:

1234 
123. 
1.23 
12.3 
0.12 
.123 
+1

+1使用\ d的,但我會建議: 「?^ \ d * \ \ d + $」,以防止沒有價值點,如「33。 「,或者允許正/負值:」[+ \ - ]?^ \ d * \。?\ d + $「 – Blazes

+0

@Blazes - 但'33.'是一個有效的數字/格式,所以......?最好保持允許:) –

+0

你應該使用'+'而不是'*' – Florent

3

請點和其後的部分可選:

"^\d+(?:\.\d+|)$" 

也喜歡\d[0-9],不要使用*自那以後你不許任何數量的任一.

側的可能性這將接受:

1 
1.23 

但不是:

.1 
23. 

這是給你如果你想要這樣的行爲。

+0

我認爲你因爲和其他人相同的原因而得到了降低投票的機會...... – Florent

+0

我沒有投票給你,但你創建了一個不必要的組。我認爲你的意思是:「^ \ d +(?:\。\ d +)?$」 – Blazes

+0

我投了贊成票,有人顯然是破壞性的。 – dan1111

2

嘗試:

/^[0-9]+(?:\.[0-9]+)?$/ 
+3

這是相當愚蠢downvote答案只是爲了得到頂部... – Florent

+0

這是隻有兩個很好的答案之一。 Upvoted。 – dan1111

+0

@Florent - 你向誰解釋了你的上述評論? –