我有一个输入文本字段,其中我希望允许一个模式输入示例:
hd546648 -ok
Vg315248 - ok >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中任何不是and或and的字符,并替换3-8中不是0-9的任何其他字符。因此,对于前2只启用字母,从3到8只启用数字。
发布于 2018-05-04 10:29:33
在整个过程中使用正则表达式是行不通的,因为每次验证都会使输入的另一部分失效。此解决方案依次检查每个字符,并截断到最后一个有效字符的长度。小提琴: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);
}发布于 2022-06-19 18:10:38
regex = /^[a-zA-Z]{1,2}\d{1,6}$/https://stackoverflow.com/questions/50171566
复制相似问题