HTML输入框验证:仅允许逗号或点作为小数分隔符的正则实现方案
欧盟价格格式输入框验证实现方案
直接使用下面的JS代码替换原有逻辑即可,可完全匹配你的需求:
- 仅允许输入数字、逗号、点三种字符
- 禁止同时混用逗号和点作为小数分隔符,自动保留先输入的分隔符类型,删除后出现的另一种分隔符
- 最多仅允许存在1个小数分隔符
完整代码如下:
$(".price_field").on("keyup", checkKey); function checkKey() { // 第一步:过滤所有非法字符,仅保留数字、逗号、点 let clean = this.value.replace(/[^0-9.,]/g, ''); const commaPos = clean.indexOf(','); const dotPos = clean.indexOf('.'); // 第二步:如果同时存在两种分隔符,保留先出现的类型,删除另一种 if (commaPos !== -1 && dotPos !== -1) { clean = commaPos < dotPos ? clean.replace(/\./g, '') : clean.replace(/,/g, ''); } // 第三步:删除多余的分隔符,仅保留第一个 clean = clean.replace(/([.,]).*?\1/g, '$1'); // 可选:如果需要限制最多2位小数,放开下面这行注释即可 // clean = clean.replace(/([.,]\d{2})\d+/g, '$1'); if (clean !== this.value) this.value = clean; }
效果验证
符合要求的输入示例会正常保留:
3,22、199,99欧盟逗号分隔格式3.22、199.99点分隔格式- 纯整数
1234也可正常输入
违规输入会被自动清理:
- 输入
3.1,2会自动转为3.12 - 输入
3,1.2会自动转为3,12 - 输入
12.34.56会自动转为12.3456 - 输入
12,34,56会自动转为12,3456
内容的提问来源于stack exchange,提问作者Simeon Mark Fernandes
相关产品推荐
相关产品推荐

