正则表达式仅输入允许的模式(输入文本)
regex input only the allowed pattern (input text)
我有一个输入文本字段,我想在其中允许模式输入示例:
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;
它的工作原理,我只能在文本框中键入字母,但如果我添加数字部分,就会出错。
我想做的是,如果我在输入框中键入,请将任何不是 A-Z 或 a-z 的字符替换为前 2 个,并将任何其他非数字 0-9 的字符替换为 3-8。所以对于前 2 个只启用字母,从 3 到 8 只启用数字。
您可以将字符串拆分为两个单独的部分,以便对两个部分执行替换:
更新:
document.getElementById("re").onkeypress = function (e) {
var keys = [8, 46, 37, 38]
if (!keys.includes(e.keyCode))
if (!/^[a-z]([a-z]\d{0,6})?$/i.test(e.target.value + e.key))
e.preventDefault();
};
<input id="re" placeholder="Type something">
在整个过程中使用正则表达式是行不通的,因为每次验证都会使输入的另一部分无效。该解决方案依次检查每个字符,并截断为最后一个有效字符的长度。 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);
}
我有一个输入文本字段,我想在其中允许模式输入示例:
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;
它的工作原理,我只能在文本框中键入字母,但如果我添加数字部分,就会出错。
我想做的是,如果我在输入框中键入,请将任何不是 A-Z 或 a-z 的字符替换为前 2 个,并将任何其他非数字 0-9 的字符替换为 3-8。所以对于前 2 个只启用字母,从 3 到 8 只启用数字。
您可以将字符串拆分为两个单独的部分,以便对两个部分执行替换:
更新:
document.getElementById("re").onkeypress = function (e) {
var keys = [8, 46, 37, 38]
if (!keys.includes(e.keyCode))
if (!/^[a-z]([a-z]\d{0,6})?$/i.test(e.target.value + e.key))
e.preventDefault();
};
<input id="re" placeholder="Type something">
在整个过程中使用正则表达式是行不通的,因为每次验证都会使输入的另一部分无效。该解决方案依次检查每个字符,并截断为最后一个有效字符的长度。 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);
}