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

标签 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

最佳答案

无需逐字符循环输入并验证每个字符,您可以执行基本清理操作:

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

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

关于Javascript Regex - 使用白名单清理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064854/

相关文章:

javascript - Node.js:如何获取 Error 对象中不正确的字段

javascript - 如何获取传单上触摸的 LatLng

javascript - 有没有办法将 Apache Velocity 模板文件与任何 HTML 模板引擎(如 Mustache 或 Handlebar.js)一起使用

Java 数组 - split() 与用户指定的分隔符

python - Python 正则表达式中的否定回溯

javascript - 如何在javascript中访问另一个窗口上的本地存储

javascript - 为什么对 Array 原型(prototype)的这种更改在我的 jQuery 插件中不起作用?

java - 将所有 <BR> 替换为\n

javascript - 重构正则表达式以不包含空组

javascript - 正则表达式匹配后面有空格或没有空格的情况