Javascript Regex - 使用白名单清理字符串

时间:2014-07-31 17:01:58

标签: javascript regex

我有一个非常基本的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

1 个答案:

答案 0 :(得分:2)

不是按字符循环输入字符并验证每个字符,而是可以执行此操作以进行基本清理操作:

var s = '123abc.48@#'
s = s.replace(/[^\d.]+/g, '');
//=> 123.48

PS:这不会检查输入中是否有超过1个小数点(不确定是否是要求。