需要使用正则表达式格式化数字(酷工具android app - cpu temp)

时间:2017-12-18 11:51:57

标签: regex

我使用的工具是用JavaScript编写的,但我无法访问JS代码。

我试图仅使用正则表达式来搜索数字。例如,初始值为25400。我想获得25.4(删除零并插入逗号或点)。

所以,需要使用正则表达式。 经过大量搜索后,我发现了一些与我的情况相近的东西:

正则表达式:

(\d{2})(?=\d)

替换模式:

$1.

但在这里,我得到25.400

我需要使用哪种正则表达式格式化此值才能获得25.4? (逗号或点是相同的)。

正确工作的正则表达式:(\ d +)(\ d {1})(\ d {2})

替换模式:$ 1. $ 2

enter image description here

希望得到你的帮助,非常感谢!

2 个答案:

答案 0 :(得分:1)

如果您真的想在这里使用正则表达式,请尝试使用;

'25400'.replace(/(\d{2})([1-9]+)0*/, '$1.$2')
// "25.4"

但对于25000,它会提供25.

建议按照@RoryMcCrossan和@FedericoklezCulloca

的提法将此值除以100并进行舍入。

答案 1 :(得分:0)

实际上,如果初始数字是25400并且您想要25.4,则将初始数字除以1000而不是100并使用toFixed(1);

function myFunction(){
	var initnum = "25400";
    var n = initnum/1000;
    n = n.toFixed(1);
    document.getElementById("demo").innerHTML = n;
}
Initial number is 25400
<br />
Click to get new number
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>

如果你想使用正则表达式,那么hsz的答案是有效的,如果你想要.0 replace(/^(\d{2})([0-9]+)0*/, '$1.$2')只需要修改它就可以尝试这个,如果你有25000

这个正则表达式会返回25.000

initial number is 25000
<p id="demo"></p>

<script>
myFunction();
function myFunction() {
	var initnum = "25000";
    var n = initnum.replace(/^(\d{2})([0-9]+)0*/, '$1.$2');
    document.getElementById("demo").innerHTML = "new number from regex is "+n;
}
</script>