我用它来过滤掉所有不是数字的东西(包括小数)
在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
答案 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)"/>
希望这会有所帮助。 :)