正则表达式替换字符串的一部分

时间:2014-10-22 19:14:26

标签: javascript regex

我有一张图表,在Y轴上我有一些数字,如40000000,7000000,2000000。

我想使用正则表达式将最后六个'0'数字替换为'M'

示例

40000000 should be 40M
7000000  should be 7M
20000000 should be 20M

如果数字小于999999,则应替换为字母“K”

4000 should be 4K

有人能用这个正则表达式帮助我吗?

enter image description here

4 个答案:

答案 0 :(得分:3)

注意someString必须是字符串,而不是数字。

someString.replace(/0{6}$/, "M").replace(/0{3}$/, "K");

答案 1 :(得分:2)

未经移动测试,但请尝试:

/0{6}$/

完整代码:

'4000000'.replace(/0{6}$/,'M')

解决数千人:

'4000000'.replace(/0{6}$/,'M').replace(/0{3}$/,'K')

答案 2 :(得分:1)

Working Sample for M

使用的正则表达式为/0{6}\b/g。请注意,$不用于检查字符串的结尾,但使用了单词边界字符\b,这使得它可以在更广泛的情况下工作,其他建议将失败。

你可以 非常容易自己为K派生一个类似的人,将其留作练习:)

完成后,您可以检查您的数据是否与第一个正则表达式匹配,如果匹配,则替换。如果没有,则测试第二个正则表达式(对于K)并在找到时替换。

<子> P.S。我用来发布解决方案(Regex 101)的服务是一项非常有用的服务,是原型设计和学习正则表达式的完美工具。

  

http://jsh.zirak.me/2klw //只有在你仍然无法弄清楚如何做的时候才会看到这一点。

如果你不知道怎么做,这个剧透包含了解决方案

答案 3 :(得分:0)

另一种产生所需输出的方法:

function getRepString (rep) {
  rep = rep+''; // coerce to string
  if (rep < 1000) {
    return rep; // return the same number
  }
  if (rep < 10000) { // place a comma between
    return rep.charAt(0) + ',' + rep.substring(1);
  }
  // divide and format
  return (rep/1000).toFixed(rep % 1000 != 0)+'k';
}

我不赞成这个答案。这个答案是CMS在这里找到的重复问题:

How to format numbers similar to Stack Overflow reputation format