替换除 - ,+和之外的所有内容。

时间:2011-09-27 16:07:03

标签: javascript jquery regex

我正在进行捐赠webapp,我需要格式化一个字符串,它将留下最小数( - ),加号(+)和小数(。)。我希望人们能够按照他们想要的方式格式化他们的美元金额,但保留数字和小数。

我目前有以下代码: var raised = $('#raised').val().replace(/\D/g,'');

有任何帮助吗?谢谢!

更新

让我解释一下为什么这是一种简单/快捷的方式来验证输入。

这将是政府只使用一次,只有一个人负责的事情。它不会是多个用户输入提交实际资金的东西。我同意这可以更好地计划,但这更像是一项繁忙的工作。事实上,向您展示我所做的将是向您展示最快捷的方式:http://www.cirkut.net/sub/batterydonate-pureCSS/

这将在活动/拍卖期间进行预测,以便人们了解捐赠了多少钱。

负责输入捐款的人有足够的能力输入有效的输入,所以我尽可能快地整理了所有的东西(整个事情需要在明天中午之前完成)。

但无论如何我找到了我需要的东西。非常感谢大家!

3 个答案:

答案 0 :(得分:4)

要完全按照您的要求行事,您可以使用此正则表达式:

var raised = $('#raised').val().replace(/[^-+.\d]/g,'');

但请注意,您仍需要验证返回的字符串是否为有效数字,因为'---''+++'等字符串会通过。或许,这甚至不是你想在客户端做的事情。

答案 1 :(得分:2)

尝试以下正则表达式:

.replace(/[^\d\-+\.]/g, '')

由于这并不能保证您拥有有效的号码而不是+-12.34.56--1,因此您可以使用以下内容验证您的号码是否有效:

/^[-+]?\d+(\.\d+)?$/

答案 2 :(得分:1)

通过在开头添加^符号,可以否定正则表达式字符类。

在您的情况下,这使得它非常简单:您可以添加要保留在字符类中的所有字符并取消它。

var raised = $('#raised').val().replace(/[^\d\.\+\-]/g,'');

希望有所帮助。