允许javascript.replace中的负小数和正小数

时间:2013-04-17 11:09:06

标签: javascript regex

我用它来过滤掉所有不是数字的东西(包括小数)

在keydown我这样做:

function validateNudgerInput(ele){
          ele.val(ele.val().replace(/[^0-9\.]/g,''));
            if (parseFloat(ele.val())> settings.max
              ||parseFloat(ele.val())< settings.min)
            {
              ele.addClass("nudgerInvalid ")
            }else{
             ele.removeClass("nudgerInvalid")
            }
        }

目前正在使用: ele.val(ele.val().replace(/[^0-9\.]/g,'')); 这剥离了任何不大于零的数字(允许的小数)-i.e.如果用户按下“A”键,则会阻止将其置于文本框中

我如何调整这个以允许负数? (允许 - 符号)

有效输入的示例: 1 -1 123.45 -123.45

3 个答案:

答案 0 :(得分:1)

此正则表达式将解析更多数字:

yourString.replace(/-?[0-9]+(\.[0-9]+)?/g,'')

编辑:匹配从输入的开头到结尾的一个数字:

yourString.match(/^-?[0-9]+(?:\.[0-9]+)?$/,'')

答案 1 :(得分:0)

听起来你这样做是为了限制文本框的输入。我通常会记住上次验证文本框时的值,以及当前值是否无效,例如与正则表达式/^-?[0-9]+(?:\.[0-9]+)?$/不匹配,例如,恢复为之前的值。

答案 2 :(得分:0)

function testFloat(id)
{
    var obj = document.getElementById(id);
    // allows only integer and float values (negative, positive)  
    obj.value = obj.value.replace(/([^-\d.]+)?((-{0,1}\d*\.?\d*)(.*)?$)/, "$3");            
}

HTML:<input type="text" id="testId"  onkeyup="testFloat(this.id)"/>

希望这会有所帮助。 :)