Javascript正则表达式替换所有非货币字符

时间:2014-02-21 10:42:22

标签: javascript regex replace currency

我需要使用javascript替换textare中的所有非数字字符。我们的客户希望删除和非数字,例如1,330.00变为1330.00。

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

我有一个代码的jsbin 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);
        })
      })

如何编辑此项以删除除第一次出现小数位以外的所有非数字

e.g 1,330.00变为1330.00 1,330.00.00变为1330.00 133o.00d.33变为133.00

2 个答案:

答案 0 :(得分:0)

您可以使用此替换:

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

答案 1 :(得分: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