javascript - 在 Javascript 中将 $(美元符号)添加到多个数字

标签 javascript regex regex-lookarounds

我有一些包含美元金额和其他文本的文本。有些金额有美元,有些则没有。以下是一些示例:

  • 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/

相关文章:

java - 我怎样才能在Java中分割这个字符串?

python - 为什么这个 Python 正则表达式否定前瞻不起作用?

javascript - 多光谱调色板

javascript - Firestore - 获取大量集合并进行解析。请求被中止

php - 如何禁止用户在特定时间段之前查看页面?

java - 单独使用时正则表达式环视如何工作

regex - RegEx用于在PowerShell中不匹配序列

javascript - 如何通过 API "input type=' 文件'“标记...NO Jquery 或外部库更改本地文件的视频源

java - 二进制字符串正则表达式控制位置

sql - 将文本字段中的时间值与当前时间进行比较