正则表达式替换除数字和小数点以外的所有内容

IT技术 javascript regex
2021-03-15 12:33:45

我有一个只需要保留文本或十进制的文本字段。这是我目前用来替换除数字和小数点以外的所有内容的代码。问题是,我想不出一个可以识别其他所有内容的正则表达式

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\D 工作正常,但我已经尝试过(?!.), (?!\.), [^.], [^\.]等等......

对于正则表达式,除了数字或小数以外的任何东西都有什么建议吗?

谢谢您的帮助

4个回答

用这个:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, '');
replace(/[^0-9.\-]/g, '')您将得到负数太
2021-04-17 12:33:45
Moshenreplace(/[^0-9.\-]/g, '')是一个好的开始,但允许减法公式,例如 -7-8,这会在没有服务器端检查的情况下破坏数据系统。正则表达式只能匹配第一个否定字符。我不会在 SO 上发布解决方案,因为我发布的最后一个正则表达式问题和答案已被 Sammitch 删除,Sammitch 与 SO 的新所有者一样,不了解 SO 的工作原理(将问题和答案一起发布),并且不要知道博客这个词的定义(它是网络日志)。所以我不会把我的珍珠丢在猪之前:让使用 SO 的人破坏他们的数据系统。
2021-04-17 12:33:45
然后通过 parseFloat 运行返回值。这将删除额外的小数点。例如parseFloat("46554.4655465.54654.545345.5") = 46554.4655465
2021-04-29 12:33:45
这非常适合将已经格式化的数字(如货币)转换为可计算的浮点数。
2021-05-09 12:33:45
@Hugo 这不允许任何事情,您不应该传递可能包含更多小数点的字符串并首先对其进行预处理。这就像说字符串允许每个字符......
2021-05-10 12:33:45

可以按如下方式仅删除小数部分:

number.replace(/(\.\d+)+/,'');

这会将 13.6667px 转换为 13px(保持单位 px 不变)。

试试这个:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");
这个表达式看起来很复杂,你能解释一下它是如何工作的或者它到底会删除什么吗?
2021-04-24 12:33:45
最佳答案。删除 0.000 10.000000 .22 2.234,但保留 1, 10, 10.1, 10.22
2021-04-26 12:33:45
这不适用于西里尔字母输入,例如“5.12 руб”。
2021-04-28 12:33:45
"11111".replace(/^\d+(\.\d{0,2})?$/, "") - 结果空字符串
2021-05-06 12:33:45

检查链接正则表达式演示

使用下面的正则表达式

[a-z] + [^0-9\s.]+|\.(?!\d)