Javascript正则表达式 - 替换非数字字符

时间:2010-03-31 17:23:43

标签: javascript regex

这有效:

var.replace(/[^0-9]+/g, '');  

这个简单的代码片段将替换任何不带数字的数字。

但小数也是实实在在的。所以,我想弄清楚如何包含一段时间。

我确信这很简单,但我的测试不起作用。

10 个答案:

答案 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 数字

&#13;
&#13;
<input type="text" oninput="this.value = this.value.replace(/[^0-9\-]+/g, '').replace(/(\..*)\./g, '$1');">
&#13;
&#13;
&#13;