DIEA
2023-09-21 16:18:52
下面使用正則表達(dá)式的 JS 腳本。只允許輸入字段中的數(shù)字。要在用戶輸入值中使用逗號(hào)更改貨幣值,例如 1,000 或 1,00,000。下面的代碼適用于除 Safari 之外的所有主要瀏覽器。僅在 Safari 中出現(xiàn)此錯(cuò)誤。不確定如何修復(fù)此正則表達(dá)式而不影響其他工作瀏覽器。SyntaxError:無效的正則表達(dá)式:無效的組說明符名稱 $('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 回答

長(zhǎng)風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以考慮以下更改:
.replace(/(?!\.)\D/g, "")
-(可選)- 由于(?!\.)\D
匹配除點(diǎn)之外的任何非數(shù)字字符,因此將此替換定義為有意義.replace(/[^\d.]/g, "")
.replace(/(?<=\..*)\./g, "")
- 可以重寫它以匹配一個(gè)點(diǎn),然后捕獲它后面的所有點(diǎn)并刪除捕獲的子字符串中的所有點(diǎn):.replace(/\.(.*)/, function(x) { return x.replace(/\./g, ''); })
.replace(/(?<=\.\d\d).*/g, "")
- 這很容易通過捕獲組和替換中對(duì)其的反向引用來修復(fù):(.replace(/(\.\d\d).*/, "$1")
請(qǐng)注意,您不需要g
,因?yàn)槟黄谕@里有一個(gè)替換)。
添加回答
舉報(bào)
0/150
提交
取消