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

Posted

技术标签:

【中文标题】Javascript 正则表达式替换所有非货币字符【英文标题】:Javascript regex replace all non currency characters 【发布时间】:2014-03-22 19:56:34 【问题描述】:

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

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

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

$(文档).ready(函数() $('input').bind('keyup', function() var 值 = $(this).val() value = value.replace(/[^\d\.]+/g,''); $(this).val(value); ) )

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

例如 1,330.00 变为 1330.00 1,330.00.00 变为 1330.00 133o.00d.33 变为 133.00

【问题讨论】:

【参考方案1】:

我设法找到了处理多点问题的方法。

我使用 .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

【讨论】:

以上是关于Javascript 正则表达式替换所有非货币字符的主要内容,如果未能解决你的问题,请参考以下文章

如果出现多于 n 次,则 JavaScript 正则表达式替换

javascript 正则表达式匹配任何脚本中所有非单词字符的正确正则表达式范围是多少?

正则表达式

JavaScript正则表达式二

JavaScript正则表达式-替换所有匹配项?

如何在 JavaScript 字符串替换中否定匹配正则表达式? [复制]