如何在javascript中使用正则表达式替换非整数字符串

如何在javascript中使用正则表达式替换非整数字符串,javascript,regex,replace,Javascript,Regex,Replace,我使用这个正则表达式试图替换一个不是整数的字符串,但是当它是整数时,它会被替换 this.v=function(){this.value=this.value.replace(/^(-?[1-9]\d*|0)$/,'');} 什么是相反的正则表达式?:将非整数的字符串替换为“”的正则表达式是什么 例如:如果用户输入的字符串不是-2,0,1123,我想清除输入。如果字符串像2e3r,2.5,-1.3,输入将被清除 价值观 您可以使用或方法清理用户输入。例如: var normalInp

我使用这个正则表达式试图替换一个不是整数的字符串,但是当它是整数时,它会被替换

 this.v=function(){this.value=this.value.replace(/^(-?[1-9]\d*|0)$/,'');}
什么是相反的正则表达式?:将非整数的字符串替换为“”的正则表达式是什么

例如:如果用户输入的字符串不是-2,0,1123,我想清除输入。如果字符串像2e3r,2.5,-1.3,输入将被清除 价值观


您可以使用或方法清理用户输入。例如:

    var normalInput = "1";
    normalInput = parseInt(normalInput, 10);
    console.log(normalInput); // prints 1

    var wrongInput = "12a23-24";
    wrongInput = parseInt(wrongInput, 10);
    console.log(wrongInput); // prints 12 (stops after first not valid number)
或者类似的:

var myInput = "21312312321",
        processedInput = Number(myInput);

if(processedInput !== NaN){ // if number given is a valid number return it (also works for float input)
    console.log(processedInput);
    return processedInput;
}
else{ // otherwise return an empty string
    return "";
}

Jsfiddle.

如果必须使用regex,那么以下操作应该可以。没有测试效率,只是拼凑在一起

var numbersOnly = function(number_string) {
    var re = /(\+?|\-?)([0-9]+)(\.[0-9]+)*/g;
    return number_string.match(re);
}

numbersOnly('pears1.3apples3.2chinesefood-7.8');
// [ '1.3', '3.2', '-7.8' ]

我通过改变功能逻辑解决了这个问题:

onblur="(this.v=function(){var re=/^(-?[1-9]\d*|0)$/;if(!re.test(this.value)){this.value=''}}).call(this)

要删除字符串中的所有非数字字符,请执行以下操作:

this.v=function(){this.value=this.value.replace(/\D+/g,'');}

有些不清楚,但如果您只是想检查用户输入的不是数字,则有一个函数->
isNaN(this.value)
\D
:匹配非数字
\D
:不允许匹配数字CIMAL。例如:1.20;2.5使用
与小数不匹配。不允许使用我想要的小数的方法。您的示例有一个小数。谢谢,我已经解决了这个问题,在我的方法中,小数是不允许的