Javascript 按前导零和尾随零拆分数字

Javascript 按前导零和尾随零拆分数字,javascript,regex,Javascript,Regex,我正在尝试为split编写正则表达式,结果如下: '4.82359634' -> ['', '4.82359634', ''] '0.82300634' -> ['0.', '82300634', ''] '5.10000000' -> ['', '5.1', '0000000'] '5,10000000' -> ['', '5,1', '0000000'] // Handle commas or dots in middle section '0.00000274' -

我正在尝试为
split
编写正则表达式,结果如下:

'4.82359634' -> ['', '4.82359634', '']
'0.82300634' -> ['0.', '82300634', '']
'5.10000000' -> ['', '5.1', '0000000']
'5,10000000' -> ['', '5,1', '0000000'] // Handle commas or dots in middle section
'0.00000274' -> ['0.00000', '274', '']
以下是我到目前为止所做的尝试,它有2个正则表达式,但也不能正常工作:

函数拆分零(v){
const[leftAndMiddle,right]=v.split(/(0+$)/).filter(布尔);
常量[left,middle]=leftAndMiddle.split(/(^[0,.]+)/).filter(布尔值)
log({左,中,右})
}
//(工作不正常),注释是期望的结果。
拆分零(“4.82359634”);//['', '4.82359634', '']
拆分零(“0.82359634”);//['0.', '82359634', '']
拆分零(“5.10000000”);//['', '5.1', '0000000']
拆分零(“510000000”);//['', '5,1', '0000000']

拆分零(“0.00000274”);//['0.00000','274','']
您可以使用

/^(0*(?:[.,]0*)?)([\d.,]*?)(0*(?:[.,]0*)?)$/

详细信息

  • ^
    -字符串的开头
  • (0*(?:[,]0*)?)
    -第1组:零个或多个
    0
    字符,后跟可选的
    序列,然后是零个或多个
    0
    字符
  • ([\d,]*?)
    -第2组:零位或多位数字、逗号或句点,但由于
    *?
    惰性量词,因此尽可能少
  • (0*(?:[,]0*)?)
    -第3组:零个或多个
    0
    字符,后跟可选的
    序列,然后是零个或多个
    0
    字符
  • $
    -字符串结束
JS演示:

函数拆分零(v){
常数[ux,左,中,右]=v.match(/^(0*(?:[,]0*))([\d,]*?)(0*(?:[,]0*))$/);
log({左,中,右})
}
拆分零(“4.82359634”);//['', '4.82359634', '']
拆分零(“0.82359634”);//['0.', '82359634', '']
拆分零(“5.10000000”);//['', '5.1', '0000000']
拆分零(“510000000”);//['', '5,1', '0000000']

拆分零(“0.00000274”);//['0.00000','274','']
您可以选取一些组并省略整个匹配字符串

const split=s=>s.match(/^([0.,]*)(.*)(0*)$/).slice(1);
风险值数据=[
'4.82359634', // ['', '4.82359634', '']
'0.82359634', // ['0.', '82359634', '']
'5.10000000', // ['', '5.1', '0000000']
'510000000',//['','5,1','0000000']//处理中间部分的逗号或点
'0.00000274', // ['0.00000', '274', '']
];
console.log(data.map(split))
。作为控制台包装{最大高度:100%!重要;顶部:0;}