浮点值的正则表达式

时间:2011-12-28 16:14:04

标签: jquery regex floating-point alphanumeric

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

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

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

4 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

/\b[-+]?[0-9]*\.?[0-9]+\b/g/^[-+]?[0-9]*\.?[0-9]+$/应该可以解决问题,除非你想在那里允许使用“1.4E-15”这样的数字。

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

答案 2 :(得分:1)

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:只有一个. ..

答案 3 :(得分:0)

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

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