我使用的工具是用JavaScript编写的,但我无法访问JS代码。
我试图只用正则表达式来搜索一个数字。例如,初始值为25400
。我想获得25.4
(删除零并插入逗号或点)。
所以,需要使用正则表达式。经过大量搜索后,我发现了一些与我的情况相近的东西:
正则表达式:
(\d{2})(?=\d)
替换模式:
$1.
但在这里,我得到25.400
我需要什么样的正则表达式来格式化这个值才能得到25.4? (逗号或点是相同的)。
正确的正则表达式:(\ d +)(\ d {1})(\ d {2})
替换模式:$ 1. $ 2
希望对你有所帮助,非常感谢!
如果你真的想在这里使用正则表达式,试试吧;
'25400'.replace(/(\d{2})([1-9]+)0*/, '$1.$2')
// "25.4"
然而对于25000
它会给25.
。
如@RoryMcCrossan和@FedericoklezCulloca所述,建议将此值除以100并舍入
实际上,如果初始数字是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>