Javascript 正则表达式删除小数点后的尾随零
Javascript regex remove trailing zeroes after decimal
我知道这个问题已经被问过很多次了,我确实找到了解决方案,value.replace(/^([\d,]+)$|^([\d,]+)\.0*$|^([\d,]+\.[0-9]*?)0*$/, "")
。
但是...我不是正则表达式专家,所以我很好奇为什么这不起作用 /[\.0]+$/
...10 应该 return 10 但我不能'不知道如何排除以 0 结尾的整数。
1.7500、1.1010、1.0000、10
1.75, 1.101, 1, 1
您可以缩短模式以匹配仅包含零的点,或者使用捕获组对数字进行非贪婪匹配并匹配可选的尾随零。
如果你想匹配数字和逗号,第一个 \d+
也可以是 [\d,]+
,因为你已经在你的模式中。
如果点后至少要有一个数字,那么量词可以是加号.\d+?
^(\d+)(?:\.0+|(\.\d*?)0+)$
看到一个regex 101 demo。
[
"1.7500",
"1.1010",
"1.0000",
"10"
].forEach(s =>
console.log(s.replace(/^(\d+)(?:\.0+|(\.\d*?)0+)$/, ""))
);
我知道这个问题已经被问过很多次了,我确实找到了解决方案,value.replace(/^([\d,]+)$|^([\d,]+)\.0*$|^([\d,]+\.[0-9]*?)0*$/, "")
。
但是...我不是正则表达式专家,所以我很好奇为什么这不起作用 /[\.0]+$/
...10 应该 return 10 但我不能'不知道如何排除以 0 结尾的整数。
1.7500、1.1010、1.0000、10
1.75, 1.101, 1, 1
您可以缩短模式以匹配仅包含零的点,或者使用捕获组对数字进行非贪婪匹配并匹配可选的尾随零。
如果你想匹配数字和逗号,第一个 \d+
也可以是 [\d,]+
,因为你已经在你的模式中。
如果点后至少要有一个数字,那么量词可以是加号.\d+?
^(\d+)(?:\.0+|(\.\d*?)0+)$
看到一个regex 101 demo。
[
"1.7500",
"1.1010",
"1.0000",
"10"
].forEach(s =>
console.log(s.replace(/^(\d+)(?:\.0+|(\.\d*?)0+)$/, ""))
);