0

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

在 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,'')); 这会删除任何不是大于零的数字(允许小数) - 即如果用户按下“A”键,它将停止将其放置在文本框中

我将如何调整它以允许负数呢?(允许 - 符号)

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

4

3 回答 3

1

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

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

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

yourString.match(/^-?[0-9]+(?:\.[0-9]+)?$/,'')
于 2013-04-17T11:21:43.343 回答
0

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

于 2013-04-17T11:47:12.190 回答
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)"/>

希望这可以帮助。:)

于 2013-12-05T12:06:09.057 回答