我使用的工具是用JavaScript编写的,但我无法访问JS代码。
我试图仅使用正则表达式来搜索数字。例如,初始值为25400
。我想获得25.4
(删除零并插入逗号或点)。
所以,需要使用正则表达式。 经过大量搜索后,我发现了一些与我的情况相近的东西:
正则表达式:
(\d{2})(?=\d)
替换模式:
$1.
但在这里,我得到25.400
我需要使用哪种正则表达式格式化此值才能获得25.4? (逗号或点是相同的)。
正确工作的正则表达式:(\ d +)(\ d {1})(\ d {2})
替换模式:$ 1. $ 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
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>