我想自動刪除所有與輸入中的模式不匹配的字符。我首先嘗試使用“^”(例如:“[az]{2,2}”將被轉換為“[^az]*”),但這僅適用于某些輸入。這是我的代碼:$("input:not([ignore-pattern-check])[pattern]").on("input", function(){ let val = $(this).val(); if (val.length >= 1){ var regex = $(this).attr("pattern"); if (regex.charAt(0) == "^"){ regex = regex.substr(1, regex.length); } if (regex.charAt(regex.length - 1) == "$"){ regex = regex.substr(0, regex.length - 1); } regex = regex.replace(/\{(.+?)\}/, "*"); regex = "^(?!.*(" + regex + "))$"; let reg = new RegExp(regex); if (reg.test(val)){ alert("This char isn't allowed!"); } else { _hide_message(); } $(this).val(val.replace(reg, "")); } });編輯 示例:我有一個輸入pattern="^[a-z]*$". 當我現在鍵入一個“A”(區分大小寫)時,這個“A”應該自動從值中刪除。當我鍵入“a”時,不應將其刪除。
Javascript / jQuery 以編程方式反轉正則表達式
函數式編程
2021-06-17 16:24:02