【问题标题】: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, ".");
如何添加第一个条件?
看来我的正则表达式太长了,短一点就好了。
【问题讨论】:
标签:
javascript
html
regex
【解决方案1】:
删除除前四位以外的所有数字:
const value = `123456`
console.log(
value.replace(/\D/g, "").replace(/^(\d{4})\d+/, '$1').replace(/\B(?=(\d{3})+(?!\d))/g, ".")
)
【解决方案2】:
我会为输入使用掩码,
("#id").inputmask({
mask: "9.999",
placeholder: "",
separator: "",
});
然后检查值,
value.replace('.','');
并用正则表达式验证它们只是数字并且最多为4个。
let regex_aux = /^\d{4}/;
if(regex_aux.test(value)){
//do something
}