Javascript正则expression式 – replace非数字字符
这工作:
var.replace(/[^0-9]+/g, '');
这个简单的代码片段将取代任何不是数字的东西。
但小数点也是真实的。 所以,我想弄清楚如何包括一个时期。
我确定这很简单,但我的testing不起作用。
你有没有逃脱这个时期? var.replace(/[^0-9\.]+/g, '');
取代不是数字的东西比replace一些数字更复杂一些。
那些build议简单加点的人,都忽略了这个事实。 也用作一个时期,所以:
This is a test. 0.9, 1, 2, 3
.0.9123
将变成.0.9123
。
在你的问题具体正则expression式将取决于很多目的。 如果你的string只有一个数字,你可以这样做:
var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")
这将find第一个数字,并用匹配的数字replace整个string。
尝试这个:
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, '');
哪一个只能捕捉一个或零周期的数字
如何做到这一点:
var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
ASP.Net文本框中的非数字字符的简短内联replace:
<asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />
改变正则expression式部分,就像你喜欢的一样。 很多人抱怨光标直接使用箭头键结束,但人们倾向于处理这个问题,而不会注意到它,例如,箭头…箭头…箭头…好吧然后…回退空格,input新的字符。
已经有了很多正确的答案,只是指出你可能也需要考虑负号。 "\-"
将其添加到任何现有的答案,以允许负数。
这里有几个我使用的jQueryinput类types:
$("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只允许数字 – 就像这里的其他解决scheme一样。
nmbr只允许正/负小数。 负数必须是第一个字符(如果需要,可以将“+”添加到filter中),从-3.6.23.333
到-3.623333
我正在努力 ,因为我厌倦了试图find保持1位小数和1位负数的方法