如何使用 .replace 角度反应形式验证输入事件上的货币字段

问题描述 投票:0回答:1

我正在尝试验证仅允许数字值和点(.)的货币输入字段 允许使用点,但不能将其作为第一个字符。我想出了下面的模式,除了一种情况之外,一切正常,其中 .即使它的第一个字符也被验证为 true。

validateInput(event) {
event.target.value = event.target.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/(\.\d{2}).+/g, '$1')) 

}

我该如何纠正这个问题,以便.不允许作为第一个字符?非常感谢任何对此的帮助,TIA。

angular validation input currency
1个回答
0
投票

我们可以使用正则表达式

/^\.$/g
验证
.
的场景并将其设置为空白,从而解决问题。

  validateInput(event: any) {
    event.target.value =event.target.value
            .replace(/[^0-9.]/g, '')
            // to handle dot scenario
            .replace(/^\.$/g, '')
            .replace(/(\..*?)\..*/g, '$1')
            .replace(/(\.\d{2}).+/g, '$1');
  }

Stackblitz 演示

© www.soinside.com 2019 - 2024. All rights reserved.