我正在尝试验证仅允许数字值和点(.)的货币输入字段 允许使用点,但不能将其作为第一个字符。我想出了下面的模式,除了一种情况之外,一切正常,其中 .即使它的第一个字符也被验证为 true。
validateInput(event) {
event.target.value = event.target.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/(\.\d{2}).+/g, '$1'))
}
我该如何纠正这个问题,以便.不允许作为第一个字符?非常感谢任何对此的帮助,TIA。
我们可以使用正则表达式
/^\.$/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');
}