这个可行:
var.replace(/[^0-9]+/g, '');
这个简单的代码片段将把任何非数字的内容替换为无。
但是十进制数也很重要。所以,我正在尝试找出如何包含一个句点。
我确信这很简单,但我的测试未能成功。
这个可行:
var.replace(/[^0-9]+/g, '');
这个简单的代码片段将把任何非数字的内容替换为无。
但是十进制数也很重要。所以,我正在尝试找出如何包含一个句点。
我确信这很简单,但我的测试未能成功。
简单说就是:var.replace(/[^\d.-]+/g, '');
替换一个不是数字的东西比替换一个数字稍微棘手一些。
那些建议简单地添加句点的人忽略了.也用作句号这一事实,因此:
This is a test. 0.9, 1, 2, 3
将变成 .0.9123
。
您问题中特定的正则表达式将很大程度上取决于目的。 如果您的字符串中只有一个数字,您可以这样做:
var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")
这将找到第一个数字,并用匹配的数字替换整个字符串。
试试这个:
var.replace(/[^0-9\\.]+/g, '');
已经有很多正确的答案了,只是要指出您可能还需要考虑负号..."\-"
将其添加到任何现有答案中以允许负数。
试试这个:
var.replace(/[0-9]*\.?[0-9]+/g, '');
这只匹配有效的十进制数(例如“1”,“1.0”,“.5”,但不包括“1.0.22”)
如果您不想捕获带有小数点的IP地址:
var.replace(/[^0-9]+\\.?[0-9]*/g, '');
这将仅捕获带有一个或零个句点的数字
$("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个小数和负数在第一位的方法。
variable.replace(/[^0-9.,\-]/g,'')
你觉得这样怎么样:
var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
<asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />
根据您的需要更改正则表达式部分。许多人抱怨使用箭头键时光标直接跳到末尾,但人们倾向于在不注意的情况下处理此问题,例如,箭头...箭头...箭头......好吧...回退删除,输入新字符。