【发布时间】:2013-10-14 19:43:34
【问题描述】:
我有一些包含美元金额和其他文本的文本。一些美元金额有美元其他没有。以下是一些示例:
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 up to $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;
})
【问题讨论】:
标签: javascript regex regex-lookarounds