gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:00:14 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com