我有一些包含美元金额和其他文本的文本。有些金额有美元,有些则没有。以下是一些示例:
1,000 至 15,000
$40
4000
如果每个数字尚不存在,我希望在每个数字的开头添加一个 $。我的尝试:
function convertToMoney(text) {
if (!text.match(/\$/)) {
return text.replace(/\b([\d,]+)\b/g, function(d) { return('$'+d); });
}
return text;
}
如果 JS 有 lookbehind我会用
function convertToMoney(text) {
return text.replace(/(?<!\$)\b(?:\d)/g, '$');
}
我可以简化我的长解决方案吗?
我可以让它与 1000 至 4000 美元
一起使用吗?
更新
应用@jfriend00解决方案后,我的金钱过滤器如下所示:
function moneyFilter(text)
var ret = text;
if (ret) {
ret = ret
.replace(/\.\d\d/g, '') // remove pennies
.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') // add comma
.replace(/(\$?)(\d[\d,]+)/g, "$$$2"); // add dollar sign
}
return ret;
})
最佳答案
这样怎么样:
function convertToMoney(text) {
return text.replace(/(\$?)([\d,]+)/g, "$$$2");
}
工作演示:http://jsfiddle.net/jfriend00/y4k3k/
这会找到任何数字序列(可选地在 $ 符号前面)并将其替换为美元符号和数字序列。
如果您确实想要正则表达式中的 \b
,您也可以在此处添加它,但我认为它不是必需的。
关于javascript - 在 Javascript 中将 $(美元符号)添加到多个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238315/