这有效:
var.replace(/[^0-9]+/g, '');
这个简单的代码片段将取代所有非数字的内容。
但是小数也是真实的。因此,我试图弄清楚如何添加句点。
我敢肯定这确实很简单,但是我的测试无法正常进行。
Answers:
尝试这个:
var.replace(/[^0-9\\.]+/g, '');
如果您不想随小数点一起捕获IP地址:
var.replace(/[^0-9]+\\.?[0-9]*/g, '');
仅捕获带有一个或零个周期的数字
这是我使用的几种jQuery输入类类型:
$("input.intgr").keyup(function (e) { // Filter non-digits from input value.
if (/\D/g.test($(this).val())) $(this).val($(this).val().replace(/\D/g, ''));
});
$("input.nmbr").keyup(function (e) { // Filter non-numeric from input value.
var tVal=$(this).val();
if (tVal!="" && isNaN(tVal)){
tVal=(tVal.substr(0,1).replace(/[^0-9\.\-]/, '')+tVal.substr(1).replace(/[^0-9\.]/, ''));
var raVal=tVal.split(".")
if(raVal.length>2)
tVal=raVal[0]+"."+raVal.slice(1).join("");
$(this).val(tVal);
}
});
intgr只允许数字-像这里的其他解决方案一样。
nmbr只允许使用正/负十进制。负面必须是第一个字符(你可以,如果你需要把它添加“+”的过滤器),带-3.6.23.333
至-3.623333
我之所以提出nmbr,是因为我厌倦了试图找到仅在第1位保留小数和负数的方法
这个仅适用于-ve至+ ve个 数字
<input type="text" oninput="this.value = this.value.replace(/[^0-9\-]+/g, '').replace(/(\..*)\./g, '$1');">