2014-02-21 53 views
1

我需要使用javascript替换textare中的所有非数字字符。我们的客户想要删除非数字,例如1,330.00变为1330.00。Javascript正则表达式替换所有非货币字符

我可以替换除小数点以外的所有非数字,但是这允许多个小数位。

我的代码 http://jsbin.com/vetedeca/1/edit?html,output

 

    $(document).ready(function(){ 
     $('input').bind('keyup', function() { 
      var value = $(this).val() 

      value = value.replace(/[^\d\.]+/g,''); 

      $(this).val(value); 
     }) 
     }) 

如何修改这个删除除了一个小数位

中首次出现的所有非数字的jsbin如 1,330.00变为1330.00 1,330.00。 00变为1330.00 133o.00d.33变为133.00

回答

0

您可以使用此替换:

var repl = s.replace(/^(.+?\.\d+).+/g, "$1").replace(/[^\d.]+/g, ""); 
0

我设法找到了解决多点问题的方法。

我添加使用.replace()另一行:

$(document).ready(function(){ 
    $('input').bind('keyup', function() { 
    var value = $(this).val() 

    value = value.replace(/[^\d\.]+/g,''); 
    value = value.replace(/(\..*)\./g,'$1'); 
    $(this).val(value); 
    }) 
}) 

此附加行会检查是否有一个第一点,随后数字,然后接着另一个点。

如果是这种情况,替换将保留现有的小数部分并删除第二个点。

更新jsbin:http://jsbin.com/vetedeca/3/edit?html,output

+0

谢谢你的工作完美! – Wardy277