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


71

这有效:

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

这个简单的代码片段将取代所有非数字的内容。

但是小数也是真实的。因此,我试图弄清楚如何添加句点。

我敢肯定这确实很简单,但是我的测试无法正常进行。


您要寻找一个数字还是多个数字?即对于“ 12.3 a b5”,您是否要返回“ 12.3 5”或“ 12.35”,或者甚至无法输入该字符串?
tloflin

Answers:



8

更换的东西,不是一个数量比更换的东西,有点麻烦,一个数字。

那些建议简单加点的人忽略了事实。还用作句点,因此:

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

您问题中的特定正则表达式在很大程度上取决于目的。如果字符串中只有一个数字,则可以执行以下操作:

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

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



2

尝试这个:

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

仅匹配有效的小数(例如“ 1”,“ 1.0”,“。5”,但不匹配“ 1.0.22”)


1
实际上,这匹配B.006或blah123。他正在寻找不利的情况。
杰夫·B

2

如果您不想随小数点一起捕获IP地址:

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

仅捕获带有一个或零个周期的数字


错了 这与非数字匹配,后跟一个可能的时间段,再跟数字。张贴者希望将所有非数字替换为空。
杰夫·B

谢谢。我误解了这个问题。
dkinzer

尽管我认为这可以匹配以一个或多个数字开头,后跟0或1个句点,然后是0个或多个数字的任何东西。
dkinzer 2010年

1

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


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,'')" />

随意更改正则表达式部分。很多人抱怨使用箭头键时光标会直接移到末尾,但是人们往往会在不注意它的情况下进行处理,例如,箭头...箭头...箭头...那么... backspace backspace,输入新字符。


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

这个仅适用于-ve+ ve个 数字

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.