如何使用javascript替换除[0-9]之外的所有字符?

时间:2017-08-17 08:25:35

标签: javascript jquery replace

如何使用Javascript替换除[[0-9]号之外的所有字符?

这是我的代码,

function test_fn(xxx) {
  var xxx = xxx.replace(/[^0-9,.]+/g, "");
  document.getElementById("fid").value = xxx;
}
<input onkeyUp="test_fn(this.value)" id="fid">

但是当用户填写012345...时,我的代码无法替换点[.] 如何替换点[.]呢?

5 个答案:

答案 0 :(得分:4)

如果您只想保留数字,请替换不是数字的所有内容\ d =数字。

function test_fn(xxx) {
  var xxx = xxx.replace(/[^\d]/g, "");
  document.getElementById("fid").value = xxx;
}

可能使用的正则表达式是:

/\D/g     //\D is everything not \d
/[^\d]/g  //\d is numerical characters 0-9
/[^0-9]/g //The ^ inside [] means not, so in this case, not numerical characters

g表示匹配搜索的所有可能性,因此无需使用+来匹配任何其他内容。

在使用正则表达式时,你会发现this tool非常有用,并且它解释了右下角可能使用的字符。

答案 1 :(得分:2)

将正则表达式更改为以下内容:

var xxx = "12.3te.st.45";
xxx = xxx.replace(/[^0-9]+/g, "");
alert(xxx);

https://jsfiddle.net/891n0hx0/

这样就可以删除任何不是0-9的东西。

答案 2 :(得分:0)

从正则表达式中取出点和逗号。

顺便说一下,您可以将元素(this)作为参数并更新value属性。使用此模式,您也可以将该函数用于其他输入。

function test_fn(element) {
    element.value = element.value.replace(/[^0-9]+/g, "");
}
<input onkeyUp="test_fn(this)" id="fid">

答案 3 :(得分:0)

<input type="text" value="" onkeypress="return isNumber(event)" />

<script type="text/javascript">
function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}
</script>

答案 4 :(得分:0)

如果你不舒服,你不必使用正则表达式。 这是一个易于理解的非正则表达式。

var str = "12AGB.63"
str = str.split("").filter(function(elem){
  return parseInt(elem)
}).join("")

使用“”作为参数的split函数将Array转换为String。

使用“”作为参数连接函数将String转换为Array

以下是Array.prototype.filter:

的说明

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filter