2012-10-18 62 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 - 你向谁解释了你的上述评论? –