RegEx/Javascript验证:不允许逗号作为有效字符

RegEx/Javascript验证:不允许逗号作为有效字符,javascript,regex,Javascript,Regex,我正在对我的数字字段进行Javascript验证。我使用正则表达式来实现这一点——第一次使用正则表达式。我需要用户只输入数字和小数,而不是逗号。i、 e.3600.00可以,但3600.00不行。我不知道如何将逗号作为一个可接受的字符删除。感谢您的帮助。谢谢 var filter = /^([0-9])/; if (!filter.test(txtItemAmount.value))

我正在对我的数字字段进行Javascript验证。我使用正则表达式来实现这一点——第一次使用正则表达式。我需要用户只输入数字和小数,而不是逗号。i、 e.3600.00可以,但3600.00不行。我不知道如何将逗号作为一个可接受的字符删除。感谢您的帮助。谢谢

                        var filter = /^([0-9])/;

                            if (!filter.test(txtItemAmount.value)) 
                            {
                                msg += "Item amount must be a number.\n";
                                txtItemAmount.focus
                            }       

您的筛选器应该类似于[0-9.]+此处允许数字。和空间

如果允许,更好的过滤器应该是[0-9]*[.][0-9]*。只有一次

我不知道javascript中的正则表达式,因此您可能需要使用\来保护某些字符。

试试以下方法:

^(\d+(\.\d*)?)$
它查找一个或多个数字\d+,然后查找一个句点,后跟0个或多个数字\.\d*。问号表示周期必须重复1次或0次,部分数字必须多。这个时期。是正则表达式中的一个特殊字符,因此必须对其进行转义,因此为\ before hand


有关详细信息,您可能希望查看一下

如果您希望允许小数小于1、整数或带小数部分的整数,您可以为此编写一个reg exp-

/^(\.\d+)|(\d+(\.\d+)?)$/.test(value)

or you can use parseFloat-

if(parseFloat(value)+''===value)

使用lookaround(负向后看和向前看的组合),如果存在逗号,您应该能够使匹配失败:

(?<!,)[0-9\.]*(?!,)

将允许1、2、3、4.5、12345.67890等;它将不允许1000,0.123456。或1.2.3.

是否允许.0?还是0。?我想至少要有一个号码,所以。它本身应该是非法的,对吗?是的。就其本身而言是非法的,而倍数也将是非法的。但这是一种货币,所以如果是0.05或0.50等,也没关系。为什么不干脆忽略逗号而不是完全限制它们呢?忽略逗号就可以了——如果这是一种更好的方式的话……不确定那会是什么样子。另外——应该提一下,负数也是可以接受的。i、 e.-500.00在许多其他无效输入中,这将匹配2英寸,123,。Lookarounds比您预期的要复杂一些,在这种情况下它们根本没有用处。OP的评论说.05是有效的,但这个正则表达式与它不匹配。它确实匹配123,我会称之为无效,但OP没有提到那个。
^(\d+\.?|\d*\.\d+)$