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

时间:2016-01-26 06:42:12

标签: javascript regex replace

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

 this.v=function(){this.value=this.value.replace(/^(-?[1-9]\d*|0)$/,'');}

相反的正则表达式是什么?:使用""替换不是整数的字符串的正则表达式。

  

例如:如果用户输入的字符串不是-2,0,1,123,就像我想要清除input.if字符串,如2e3r,2.5,-1.3,输入将是明确的   值

4 个答案:

答案 0 :(得分:0)

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

    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 example1 example2

答案 1 :(得分:0)

如果必须使用正则表达式,则以下内容应该有效。没有经过效率测试,只是把它们放在一起。

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' ]

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

删除字符串中的所有非数字字符:

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