gpt4 book ai didi

regex - 使用正则表达式从字符串中删除第一个零值

转载 作者:行者123 更新时间:2023-12-02 17:21:49 25 4
gpt4 key购买 nike

我使用 padStart 方法 (padLeft) 创建了一个字符串值,例如:

"5".padStart(19, "0")

结果为“0000000000000000005”如何使用正则表达式取回 5?我测试过这个:

/^0*(\d+)$/.exec(d)[1]

正确返回 5。

但是对于像“00000012.22”这样的东西,这个正则表达式返回 null

示例:

5 > 5

005 > 5

0011.22 > 11.22 >> 这是第一个问题!

00100 >> 100

001001 >> 1001

00.5 >> 0.5 这是第二个问题!

工作代码但没有正则表达式:

function toDb(d) {
if (d == null) return null;
var precisionIndex = d.indexOf('.');
return d.toString().padStart((29 + precisionIndex + 1), '0');
}

function fromDb(d) {
if (d == null) return null;
d = d.replace(/^0+/, ''); // I'd like to use regex here
if (d.indexOf('.') == 0) // I'd like to use regex here
d = '0' + d; // I'd like to use regex here
return d;
}

fromDb(toDb('0.5')) 为我返回 0.5。但我想在我的代码中使用正则表达式。

最佳答案

使用String#replace替换前导 0 的方法。

console.log(
"0000000000000000005".replace(/^0+(?=\d)/, '')
)

console.log(
"000000000000000000.5".replace(/^0+(?=\d)/, '')
)

在正则表达式中 start anchor(^)断言字符串的开始位置和 0+ 匹配组合 one or more repetition 0 个,一共 ^0+ 匹配开头的 0

更新:要避免在 之前删除 0 使用 positive look ahead assertion , (?=\d) 与数字后面的 0 匹配。

关于regex - 使用正则表达式从字符串中删除第一个零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42107514/

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