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

问题描述 投票:-2回答:2

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

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

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

正则表达式:

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

替换模式:

$1.

但在这里,我得到25.400

我需要什么样的正则表达式来格式化这个值才能得到25.4? (逗号或点是相同的)。

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

替换模式:$ 1. $ 2

enter image description here

希望对你有所帮助,非常感谢!

regex
2个回答
1
投票

如果你真的想在这里使用正则表达式,试试吧;

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

然而对于25000它会给25.

如@RoryMcCrossan和@FedericoklezCulloca所述,建议将此值除以100并舍入


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')只是修改它之后,这个正则表达式将返回25.000如果你有25000

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>
© www.soinside.com 2019 - 2024. All rights reserved.