JS求助:如何移除输入中不匹配正则的字符?
解决输入内容保留数字和逗号的问题
你的问题出在正则表达式的逻辑上:当前代码是把符合要求的字符(数字、逗号)替换为空,正好和需求相反。要实现保留数字和逗号、删除其他字符的效果,需要修改正则,匹配所有不符合要求的字符并替换掉。
修改后的代码:
<input id="myInput" onblur="myFunction()"> <script> function myFunction() { var value = document.getElementById('myInput').value; // 匹配除数字和逗号之外的所有字符,全局替换为空 var regexCharacter = /[^0-9,]+/g; var strFirst = value.replace(regexCharacter, ''); document.getElementById('myInput').value = strFirst; } </script>
关键说明:
- 正则
[^0-9,]+中的^在字符集[]内表示取反,意思是匹配任何不在0-9和,范围内的字符 - 去掉了原正则里多余的
|,因为字符集内的|会被当作普通字符匹配,不是逻辑或的作用 - 给
strFirst添加了var声明,避免全局变量污染
测试输入a12,b2a时,会删除所有非数字/逗号的字符,最终得到12,2,符合你的需求。
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

