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

标签 javascript jquery regex

我想自动删除所有与输入中的模式不匹配的字符。我首先尝试使用“^”(示例:“[a-z]{2,2}”将转换为“[^a-z]*”),但这只适用于某些输入。

这是我的代码:

$("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”时,它不应被删除。

最佳答案

您可以尝试下面的代码 - 使用上面评论中的解决方案。

const update = () => {
  const regex = document.getElementById("regex").value;
  const input = document.getElementById("input").value;
  const result = input.match(new RegExp(regex, 'g')).join('X');
  console.log("result", result);
  document.getElementById("output").innerHTML = result;
}
<label for="regex">Regex</label><input name="regex" id="regex" type="text" value="[a-z ]+"><br>
<label for="input">Input</label><input name="input" id="input" type="text" value="only Small Letters allowed, no _ underscores etc:)"><br>
<button onclick="update()">Run</button>
<br>
<div id="output"></div>

关于Javascript/jQuery 以编程方式反转正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431131/

相关文章:

php - 使用ajax将行添加到表的末尾

regex - 是否可以使用正则表达式来驼峰化/下划线字符串?

javascript - 当只有一种数值可能性时,递归函数返回未定义

jquery - 过滤器 :blur for mozilla firefox <svg> not working

javascript - 使用 jquery 克隆()一个 html 表及其所有数据,包括选择及其选项和输入

javascript - 内部图案可变

javascript - 什么正则表达式匹配所有出现的 css url?

javascript - JQuery UI 对话框可以记住它在打开和关闭之间的位置吗

javascript - 如果缺少环境变量,则 Gatsby 构建失败

javascript - html5mode 破坏了 AngularJS 路由