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

84

这个可行:

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

这个简单的代码片段将把任何非数字的内容替换为无。

但是十进制数也很重要。所以,我正在尝试找出如何包含一个句点。

我确信这很简单,但我的测试未能成功。


你是在寻找一个数字还是多个数字?例如,“12.3 a b5”,你想返回“12.3 5”还是“12.35”,或者这个输入字符串根本不可能? - tloflin
11个回答

124

简单说就是:var.replace(/[^\d.-]+/g, '');


4
逃避经期是没必要的,我相信。 - Lane

10

替换一个不是数字的东西比替换一个数字稍微棘手一些。

那些建议简单地添加句点的人忽略了.也用作句号这一事实,因此:

This is a test. 0.9, 1, 2, 3 将变成 .0.9123

您问题中特定的正则表达式将很大程度上取决于目的。 如果您的字符串中只有一个数字,您可以这样做:

var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")

这将找到第一个数字,并用匹配的数字替换整个字符串。


7

试试这个:

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

2

已经有很多正确的答案了,只是要指出您可能还需要考虑负号..."\-"将其添加到任何现有答案中以允许负数。


1

试试这个:

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

这只匹配有效的十进制数(例如“1”,“1.0”,“.5”,但不包括“1.0.22”)


1
实际上,这与B.006或blah123相匹配。他正在寻找负面情况。 - Jeff B

1

如果您不想捕获带有小数点的IP地址:

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

这将仅捕获带有一个或零个句点的数字


这是错误的。这匹配非数字,后跟可能的句点,然后是数字。发帖者想用空白替换所有非数字。 - Jeff B
谢谢。我误解了问题。 - dkinzer
虽然我认为这个表示匹配任何以一个或多个数字开头,后跟0或1个句点,再后跟0或多个数字的内容。 - dkinzer

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个小数和负数在第一位的方法。


0
我使用这个表达式来排除所有的非数字字符并保留负数的负号。
variable.replace(/[^0-9.,\-]/g,'')

0

你觉得这样怎么样:

var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");

0
在ASP.Net文本框中,简单而快速地替换非数字字符:
 <asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />

根据您的需要更改正则表达式部分。许多人抱怨使用箭头键时光标直接跳到末尾,但人们倾向于在不注意的情况下处理此问题,例如,箭头...箭头...箭头......好吧...回退删除,输入新字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接