gpt4 book ai didi

javascript - 用于替换字符串中小数点后无意义零的正则表达式模式

转载 作者:行者123 更新时间:2023-11-30 16:38:09 25 4
gpt4 key购买 nike

我需要一个替换所有零的正则表达式 0在点 . 之后的字符串中并且没有任何数字 0-9在它之后。例如

$2,305.690 ---> $2,305.69 , 20,345.690000 % ---> 20,345.69 % , 345.609## ---> 345.609## , 23.000 --> 23 , 0.00 --> 0

我试过这个 (/(?<=\..*)0(?=.*[^0-9].*)/g, '')但它抛出异常,可能是因为 JavaScript 不支持 Lookbehinds。

请提出一个 JS 正则表达式解决方案。

最佳答案

你可以使用

\.(\d*?)0+(\D*)$

如果第 1 组长度大于 0,则替换为 .$1$2,否则替换为 $1$2。它可以在回调函数中完成(见下文)。

正则表达式匹配:

  • \. - 小数分隔符(字面量 .)
  • (\d*?) - 0 位或更多位(捕获组 1 - 分隔符后的所有数字,直到尾随零),尽可能少
  • 0+ - 1 个或多个零...
  • (\D*) - 后跟 0 个或多个非数字(捕获组 2)...
  • $ - 就在字符串结尾之前(或多行模式下的行)

var re = /\.(\d*?)0+(\D*)$/gm; 
var str = '$2,305.690\n ---> $2,305.69, \n20,345.690 %\n ---> 20,345.69 %, \n345.609##\n ---> 345.609##\n$2,305.000000\n --> $2,305\n0.000\n ---> 0';
var result = str.replace(re, function(m, grp1, grp2) {
return (grp1.length > 0 ? "." : "") + grp1 + grp2;
});
document.write(result.replace(/\n/g, '<br/>'));

关于javascript - 用于替换字符串中小数点后无意义零的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com