我有一个非常基本的 RegEx 问题。我正在尝试使用白名单清理输入字段。我试图只允许数字和小数进入我的领域。如果用户键入无效字符,我想将其从输入中删除并用干净的字符串替换输入。
我可以让它只使用数字,但我无法将小数放入允许的字符池中:
var sanitize = function(inputValue) {
var clean = "",
numbersOnly = /[^0-9]/g; // only numbers & a decimal place
if (inputValue) {
if (numbersOnly.test(inputValue)) {
// if test passes, there are bad characters
for (var i = 0; i < inputValue.length; i++) {
clean += (!numbersOnly.test(inputValue.charAt(i))) ? inputValue.charAt(i) : "";
}
if (clean != inputValue) {
makeInputBe(clean);
}
}
}
};
工作 fiddle
最佳答案
无需逐字符循环输入并验证每个字符,您可以执行基本清理操作:
var s = '123abc.48@#'
s = s.replace(/[^\d.]+/g, '');
//=> 123.48
PS:这不会检查输入中是否有超过 1 个小数点(不确定这是否是要求。
关于Javascript Regex - 使用白名单清理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064854/