【问题标题】:Regex for maximum 4 digit with dot, accept only number and separate with dot every thousand正则表达式,最多 4 位带点,只接受数字,每千位用点分隔
【发布时间】:2021-12-26 07:25:18
【问题描述】:

我在将 HTML 中的输入转换为特定条件时遇到问题:

  • 最多 4 位带点(例如:5.100)
  • 只接受号码
  • 如果千位用点分隔

我可以通过这个实现最后两个:

value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ".");

如何添加第一个条件?

看来我的正则表达式太长了,短一点就好了。

【问题讨论】:

  • 如果value 包含超过 4 个数字会发生什么

标签: javascript html regex


【解决方案1】:

删除除前四位以外的所有数字:

const value = `123456`
console.log(
   value.replace(/\D/g, "").replace(/^(\d{4})\d+/, '$1').replace(/\B(?=(\d{3})+(?!\d))/g, ".")
)

【讨论】:

  • 0.34 之类的会发生什么?
  • @Andy 到目前为止的问题是关于整数的。
【解决方案2】:

我会为输入使用掩码,

("#id").inputmask({
                mask: "9.999", 
                placeholder: "",
                separator: "", 
               });

然后检查值,

value.replace('.',''); 

并用正则表达式验证它们只是数字并且最多为4个。

let regex_aux = /^\d{4}/;
 if(regex_aux.test(value)){
        //do something
    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多