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位负数的方法