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

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

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

D 很好用,但我试过 (?!.), (?!\.), [^.], [^\.]等等。

对于正则表达式,除了数字或小数外,还有什么建议吗?

谢谢你的帮助

208270 次浏览

用这个:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, '');

试试这个:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");

只能删除小数部分如下:

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

这将把13.6667像素转换为13像素(保持单位像素不变)。

检查链接 正则表达式演示

使用下面的条例执行程序

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

正则表达式语法备忘单

去 MDN

const str1 = 'hello 123 !@#$%^WORLD?.456_';
const str2 = '৳ $ 20,500.00';


console.log(str1.replace(/[^\d.]/g, "")); //123.456
console.log(str2.replace(/[^\d.]/g, "")); //20500.00

使用替换和搜索强制执行十进制数

(text: string )=>{
const index = text.search(/(\.)/);
if (index != text.length -1) {
let str = text.substring(0, index+1);
let end = text.substring(index).replace(/[^0-9]/g, '');
text = str + end;
}
return text;
}