十进制数字的 Javascript 正则表达式 - 替换非数字和多个小数点
Javascript Regex for Decimal Numbers - Replace non-digits and more than one decimal point
我试图将输入限制为十进制数。我希望根本不显示任何无效字符(不显示然后删除)。我已经实现了这个,但对于整个整数(如电话号码的输入),但现在我需要将其应用于十进制输入。
示例输入/输出:
default value 25.00 -> type 2b5.00 -> display 25.00
default value 265.50 -> type 2.65.50 -> display 265.50 (as if prevented decimal point from being entered)
default value 265.52 -> type 265.52. -> display 265.52 (same as previous one)
结束新编辑
我发现许多线程处理"十进制输入"问题,但几乎 99% 的线程只处理"匹配"和"测试"输入,而我需要替换无效字符。
除了尝试许多像/^'d+('.'d{0,2})?$/
这样的正则表达式外,我还尝试了如下所示的东西,它只保留输入中的第一个出现。这仍然不是我的要求,因为我需要"原始"小数点保持不是新输入中的第一个。这是它的代码:
[this.value.slice(0, decimalpoint), '.', this.value.slice(decimalpoint)].join('')
这个线程最接近我需要的,但由于没有回应关于防止多个小数点的最后一条评论(这是我的要求),所以它没有用。
任何帮助将不胜感激。
大纲:找到第一个.
,在那里拆分并清理零件,否则只需返回清理值。
function clean(string) {
return string.replace(/[^0-9]/g, "");
}
var value = "a10.10.0";
var pos = value.indexOf(".");
var result;
if (pos !== -1) {
var part1 = value.substr(0, pos);
var part2 = value.substr(pos + 1);
result = clean(part1) + "." + clean(part2);
} else {
result = clean(value);
}
console.log(result); // "10.100"
相关文章:
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 通过HTML5 / JS / PhoneGap使用带有小数点的数字键盘
- 使用AngularJS将HTML文件中的数字限制为小数点后2位
- Opera中的JSON解析抛出“非法数字格式(尾随小数点)”
- 在一些Android设备/Chrome上,HTML5数字输入中没有小数点
- 限制输入数字小数点前后的数字
- JS-忽略小数点后的数字
- 允许保存以小数点开头的数字
- 在小数点后给出一个固定宽度的 JavaScript 数字,同时保留一个数字
- 十进制数字的 Javascript 正则表达式 - 替换非数字和多个小数点
- 将 JavaScript 数字转换为小数点后两位
- 挖空 - 将输入限制为仅带有一个小数点的数字
- 更改为在小数点后添加 2 位数字
- Javascript 将数字舍入到小数点后 2 位
- 将数字舍入到小数点后两位,并删除任何其他小数点
- 如何使用javascript截断(不舍入)小数点后的特定数字
- 防止用户在小数点前 2 位数字后输入更多数字
- 我怎样才能对浮点数进行四舍五入,使小数点后只有两个尾随数字
- 字符串,数字小数点后2位