gpt4 book ai didi

javascript - 删除任何非数字并检查是否格式化为有效数字

转载 作者:行者123 更新时间:2023-12-04 00:01:42 25 4
gpt4 key购买 nike

我试图找出一个正则表达式模式,它允许一个字符串但删除任何不是数字、. 或前导 - 的内容。

我正在寻找从字符串中删除任何非“数字”变量的最简单方法。此解决方案不必是正则表达式。

这意味着它应该转

1.203.00 -> 1.20300
-1.203.00 -> -1.20300
-1.-1 -> -1.1
.1 -> .1
3.h3 -> 3.3
4h.34 -> 4.34
44 -> 44
4h -> 4

规则是第一个句点是小数点,后面的每一个都应该被删除。字符串中应该只有一个减号,并且应该在最前面。

我在想它应该有一个正则表达式,但我就是想不通。我发现的大多数正则表达式解决方案都允许保留第二个小数点。

最佳答案

您可以使用这种替换方法:

  • 在第一个 replace 中,我们将删除所有非数字和非 DOT 字符。唯一的异常(exception)是我们使用前瞻性否定的第一个连字符。
  • 在第二个 replace 回调中,我们将删除第一个 DOT 之后的所有 DOT。

代码和演示:

var nums = ['..1', '1..1', '1.203.00', '-1.203.00', '-1.-1', '.1', '3.h3',
'4h.34', '4.34', '44', '4h'
]

document.writeln("<pre>")

for (i = 0; i < nums.length; i++)
document.writeln(nums[i] + " => " + nums[i].replace(/(?!^-)[^\d.]+/g, "").
replace(/^(-?\d*\.\d*)([\d.]+)$/,
function($0, $1, $2) {
return $1 + $2.replace(/[.]+/g, '');
}))

document.writeln("</pre>")

关于javascript - 删除任何非数字并检查是否格式化为有效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37619559/

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