浮点值的正则表达式

我希望我的文本框只有浮点值,并过滤掉任何符号和字母,我找到的最近的解决方案是:

jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) { $(this).val($(this).val().replace(/[^\d]/, '')); }); 

但它也过滤掉小数点。 如何从上面的filter或任何新建议中排除小数?

试试这个:

 jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) { $(this).val($(this).val().replace(/[^\d.]/g, '')); }); 

/\b[-+]?[0-9]*\.?[0-9]+\b/g或/ /^[-+]?[0-9]*\.?[0-9]+$/应该做的伎俩,除非你想在那里允许像“1.4E-15”这样的数字。

http://www.regular-expressions.info/floatingpoint.html对这个不寻常的案例提出了一些建议。

 jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) { var newVal = $(this).val().replace(/[^\d.]/, '').split("."); if ( newVal.length>2 ) newVal.length = 2; newVal.join("."); $(this).val(newVal); }); 

@Dave Newton:只有一个. ..

您需要匹配非数字或非点数,并且需要转义点

 jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) { $(this).val($(this).val().replace(/[^\d]|[^\.]/, '')); });