javascript - 不要让小数点在输入值内重复一次以上
问题描述
我有一个不包括十进制数字的输入值,但问题是小数点或句点在输入值中重复多次,例如 1.2.3 而不是这个 1.23 谢谢。
let input = document.querySelectorAll("input")
let arr = []
function period_noRepeat(x){
const result = []
const input = Array.isArray(x)? x: x.split('')
for(let i = 0; i < input.length; ++i){
if(input[i] == input[i + 1] && input[i] != 1 * input[i]) continue
result.push(input[i])
}
return result;
}
const regex = /[^0-9\.]/
input.forEach(function(item){
item.addEventListener("input",function(e){
item.value = item.value.replace(regex,"")
arr = item.value.split("")
item.value = period_noRepeat(arr).join("")
})
})
<input type="text" class="dividend" >
<input type="text" class="divisor" dir = "rtl">
解决方案
尝试使用这个:
^-?[0-9]\d*(\.\d+)?$
(\.\d+)?
将确保您的小数部分只会重复一次。
推荐阅读
- laravel-5 - laravel 查询生成器删除 where 子句
- reactjs - 将道具值与具有新(漂亮)值的查找列表匹配
- asp.net - 如何将数据从 Unity3D_WebGL 发布到 asp.net
- c++ - 使用元类强制所有枚举类类型具有公共元素
- video - ffmpeg中带有png图像的电影
- python - 如何从 django 的 datefield 获取年份?
- javascript - 使用 Mapbox.js 创建以浮点数作为缩放级别的地图
- postgresql - 如何使用 NFS 卷在 Kubernetes 上部署 Postgresql
- sql - 如何在 case 语句中使用 is null
- c++ - CMake 不链接 C 和 C++ 静态库(未定义对函数的引用)