猿问

Javascript / jQuery 以编程方式反转正则表达式

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


函数式编程
浏览 112回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答