正则表达式替换非数字

时间:2019-12-05 15:47:44

标签: javascript regex angular

我想用一个空字符串替换所有非数字字符。我发现this solution

我试图在更改时替换输入元素的值。但是当我在上面使用时,直到我按一个数字,它才会替换。

我键入的每个非数字会一直停留到我键入数字

例如:2aaaaa将不会被替换。但是一旦键入2aaaa3,它将替换所有的a并变为23

这是正常行为吗?我怎么能达到我的要求。

component.ts

mobileChanged = () => {
    this.mobile = this.mobile.replace(/\D/g,'');
  };

angular component.html

<input type="text" [(ngModel)]="mobile" (ngModelChange)="mobileChanged()">

2 个答案:

答案 0 :(得分:0)

是的,这是ngModelChange的常见行为,但似乎您需要在这里onkeyup事件来替换非数字。像-

function mobileChanged() {
  var txtinput = document.getElementById("fname");
  var x = txtinput.value.replace(/\D/g,'');
  txtinput.value = x;
}
<input id ="fname" type='text' onkeyup="mobileChanged()">

查看您是否还有困惑https://stackoverflow.com/a/46403258/1138192

答案 1 :(得分:0)

您可以使用jQuery中的keyup或Javascript中的onkeyup

$("document").ready(function() {
  $("input").keyup(function() {
    let v = this.value.replace(/\D/g, '');
    this.value = v;
  })
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" value="" />