这有效:
var.replace(/[^0-9]+/g, '');
这个简单的代码片段将替换任何不带数字的数字。
但小数也是实实在在的。所以,我想弄清楚如何包含一段时间。
我确信这很简单,但我的测试不起作用。
答案 0 :(得分:86)
你逃脱了这段时间吗? var.replace(/[^0-9\.]+/g, '');
答案 1 :(得分:8)
替换不是数字的东西比替换 数字的东西有点棘手。
那些暗示简单地添加点的人忽略了这个事实。也用作句号,所以:
This is a test. 0.9, 1, 2, 3
将成为.0.9123
。
问题中的具体正则表达式在很大程度上取决于目的。如果你的字符串中只有一个数字,你可以这样做:
var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")
找到第一个数字,并用匹配的数字替换整个字符串。
答案 2 :(得分:5)
试试这个:
var.replace(/[^0-9\\.]+/g, '');
答案 3 :(得分:2)
试试这个:
var.replace(/[0-9]*\.?[0-9]+/g, '');
只匹配有效小数(例如“1”,“1.0”,“。5”,但不是“1.0.22”)
答案 4 :(得分:2)
如果您不想捕获IP地址以及小数:
var.replace(/[^0-9]+\\.?[0-9]*/g, '');
只捕获带有一个或零个周期的数字
答案 5 :(得分:1)
已经有很多正确的答案,只是指出你可能还需要考虑负号。"\-"
将其添加到任何现有答案以允许负数。
答案 6 :(得分:0)
这样做:
var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
答案 7 :(得分:0)
ASP.Net文本框中的非数字字符的简短内联替换:
<asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />
改变正则表达式部分就像你喜欢的那样。当使用箭头键时,很多人抱怨光标直接到达终点,但是人们倾向于在没有注意到它的情况下处理这个问题,例如箭头......箭头......箭头......好吧......退格后退空间,输入新的字符。
答案 8 :(得分:0)
以下是我使用的几个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位小数和第1位的负数的方法
答案 9 :(得分:0)
这个只适用于 -ve 到 + ve 数字
<input type="text" oninput="this.value = this.value.replace(/[^0-9\-]+/g, '').replace(/(\..*)\./g, '$1');">
&#13;