我想自動(dòng)刪除所有與輸入中的模式不匹配的字符。我首先嘗試使用“^”(例如:“[az]{2,2}”將被轉(zhuǎn)換為“[^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, "")); } });編輯 示例:我有一個(gè)輸入pattern="^[a-z]*$". 當(dāng)我現(xiàn)在鍵入一個(gè)“A”(區(qū)分大小寫)時(shí),這個(gè)“A”應(yīng)該自動(dòng)從值中刪除。當(dāng)我鍵入“a”時(shí),不應(yīng)將其刪除。
Javascript / jQuery 以編程方式反轉(zhuǎn)正則表達(dá)式
函數(shù)式編程
2021-06-17 16:24:02