下面使用正则表达式的 JS 脚本。只允许输入字段中的数字。要在用户输入值中使用逗号更改货币值,例如 1,000 或 1,00,000。下面的代码适用于除 Safari 之外的所有主要浏览器。仅在 Safari 中出现此错误。不确定如何修复此正则表达式而不影响其他工作浏览器。SyntaxError:无效的正则表达式:无效的组说明符名称 $('input.input-num').on('change click keyup input paste',(function (event) { $(this).val(function (index, value) { return value.replace(/(?!\.)\D/g, "").replace(/(?<=\..*)\./g, ""); }); })); $('input.input-currency').on('change click keyup input paste',(function (event) { $(this).val(function (index, value) { return value.replace(/(?!\.)\D/g, "").replace(/(?<=\..*)\./g, "").replace(/(?<=\.\d\d).*/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ","); }); }));
1 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
您可以考虑以下更改:
.replace(/(?!\.)\D/g, "")
-(可选)- 由于(?!\.)\D
匹配除点之外的任何非数字字符,因此将此替换定义为有意义.replace(/[^\d.]/g, "")
.replace(/(?<=\..*)\./g, "")
- 可以重写它以匹配一个点,然后捕获它后面的所有点并删除捕获的子字符串中的所有点:.replace(/\.(.*)/, function(x) { return x.replace(/\./g, ''); })
.replace(/(?<=\.\d\d).*/g, "")
- 这很容易通过捕获组和替换中对其的反向引用来修复:(.replace(/(\.\d\d).*/, "$1")
请注意,您不需要g
,因为您只期望这里有一个替换)。
添加回答
举报
0/150
提交
取消