我想自动删除所有与输入中的模式不匹配的字符。我首先尝试使用“^”(例如:“[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”时,不应将其删除。
相关分类