为了账号安全,请及时绑定邮箱和手机立即绑定

Jquery/Javascript - 正则表达式 - 仅在 Safari 浏览器中出错

Jquery/Javascript - 正则表达式 - 仅在 Safari 浏览器中出错

DIEA 2023-09-21 16:18:52
下面使用正则表达式的 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,因为您只期望这里有一个替换)。


查看完整回答
反对 回复 2023-09-21
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信