我有一张图表,在Y轴上我有一些数字,如40000000,7000000,2000000。
我想使用正则表达式将最后六个'0'数字替换为'M'
示例
40000000 should be 40M
7000000 should be 7M
20000000 should be 20M
如果数字小于999999,则应替换为字母“K”
4000 should be 4K
有人能用这个正则表达式帮助我吗?
答案 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)
使用的正则表达式为/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';
}