gpt4 book ai didi

javascript - 正则表达式仅输入允许的模式(输入文本)

转载 作者:行者123 更新时间:2023-12-03 01:57:37 25 4
gpt4 key购买 nike

我有一个输入文本字段,我想在其中允许模式输入示例:

hd546648-好的

Vg315248 - 好的 > 2 个字符可以是字母(小写、大写),以及 6 个字符的数字

on("input", "test", function(event) {
const invalidChars = /^[^A-Za-z]{1,2}\D{1,6}$/g;
ob = event.target;
if (invalidChars.test(ob.value)) {
ob.value = ob.value.replace(invalidChars, "");
}
});

如果我只使用这个 /^[^A-Za-z]{1,2}/g; 它的工作原理,我只能在文本框中输入字母,但是如果我添加数字部分有问题。

我想要做的,如果我在输入框中键入,则将前 2 个不是 A-Z 或 a-z 的任何字符替换为 3-8,并将除数字 0-9 之外的任何其他字符替换为 3-8。因此,前 2 个仅启用字母,第 3 到 8 个仅启用数字。

最佳答案

对整个事情使用正则表达式是行不通的,因为每次验证都可能使输入的另一部分无效。该解决方案依次检查每个字符,并 chop 为最后一个有效字符的长度。在这里 fiddle :https://jsfiddle.net/spwe4k21/

$(function() {
$("#submit").attr("disabled", true);

$("#userinput").keyup(function() {
let input = $(this).val();
let cleanedInput = cleanInput(input);
$(this).val(cleanedInput);

});
});

function cleanInput(input) {
let tests = [/[a-z]/i, /[a-z]/i, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/];
for (let i = 0; i < tests.length; i++) {
if (input[i] == undefined || !tests[i].test(input[i])) {
return input.substring(0, i);
}
}

return input.substring(0, tests.length);
}

关于javascript - 正则表达式仅输入允许的模式(输入文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50171566/

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