如何使用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...
时,我的代码无法替换点[.
]
如何替换点[.
]呢?
答案 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