如何使用javascript替换除之外的所有字符?

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

这是我的代码,

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

但是当用户填写012345...我的代码无法替换点[ . 我怎样才能替换点[ . ]也呢?

如果您只想保留数字,则替换不是数字\ 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表示匹配搜索的所有可能性,因此不需要使用+来匹配任何其他内容。

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

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

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

https://jsfiddle.net/891n0hx0/

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

   

只需将正则表达式中的点和逗号取出即可。

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

 function test_fn(element) { element.value = element.value.replace(/[^0-9]+/g, ""); } 
  

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

 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