You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular响应式表单:Input事件中货币字段验证(禁止点开头)

修正货币输入验证逻辑

你可以在现有替换规则后添加一个处理开头小数点的正则替换,直接从根源上禁止小数点作为首字符。以下是修正后的代码:

validateInput(event) {
  event.target.value = event.target.value
    .replace(/[^0-9.]/g, '') // 只保留数字和小数点
    .replace(/^\./, '') // 移除开头的小数点
    .replace(/(\..*?)\..*/g, '$1') // 只保留第一个小数点
    .replace(/(\.\d{2}).+/g, '$1'); // 限制小数点后最多两位
}

关键修正说明

  • 新增的replace(/^\./, '')会精准匹配字符串开头的小数点并直接移除,确保输入的第一个字符只能是数字。
  • 保持原有规则的执行顺序:先过滤非法字符,再处理开头的小数点,接着确保只有一个小数点,最后限制小数位数,逻辑清晰且覆盖所有要求的场景。

如果想简化正则整合(可选),也可以用以下写法:

validateInput(event) {
  let value = event.target.value.replace(/[^0-9.]/g, '');
  // 合并处理开头小数点、单小数点限制、小数位限制
  value = value.replace(/^\./, '').replace(/(\.\d{0,2})|\./g, '$1');
  event.target.value = value;
}

内容的提问来源于stack exchange,提问作者Nancy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:38:16