Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式-使用白名单清理字符串_Javascript_Regex - Fatal编程技术网

Javascript正则表达式-使用白名单清理字符串

Javascript正则表达式-使用白名单清理字符串,javascript,regex,Javascript,Regex,我有一个非常基本的正则表达式问题。我正在尝试用白名单清理输入字段。我试图只允许数字和小数进入我的字段。如果用户键入无效字符,我希望将其从输入中删除,并用干净的字符串替换输入 我可以让它只处理数字,但我无法将小数放入允许的字符池: var sanitize = function(inputValue) { var clean = "", numbersOnly = /[^0-9]/g; // only numbers & a decimal place i

我有一个非常基本的正则表达式问题。我正在尝试用白名单清理输入字段。我试图只允许数字和小数进入我的字段。如果用户键入无效字符,我希望将其从输入中删除,并用干净的字符串替换输入

我可以让它只处理数字,但我无法将小数放入允许的字符池:

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);
            }
        }
    }
};
var sanitize=函数(inputValue){
var clean=“”,
numbersOnly=/[^0-9]/g;//仅限数字和小数点位
如果(输入值){
if(numbersOnly.test(inputValue)){
//如果测试通过,则存在错误字符
对于(变量i=0;i

使用

而不是逐个字符循环输入并验证每个字符,您可以为基本清理操作执行以下操作:

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

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

为什么不干脆
inputValue。替换(/[^0-9.,]+)/,''Number.isFloat(inputValue)| | Number.isInteger(inputValue)
我不是。我的小提琴只对数字有效,但我不能把小数点放进去。我无法理解正则表达式字符串是否允许它。