首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regex只输入允许的模式(输入文本)

regex只输入允许的模式(输入文本)
EN

Stack Overflow用户
提问于 2018-05-04 09:25:35
回答 2查看 3.2K关注 0票数 0

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

hd546648 -ok

Vg315248 - ok >2字符可以是字母(小写、大写)和6个字符仅限数字

代码语言:javascript
复制
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只启用数字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-04 10:29:33

在整个过程中使用正则表达式是行不通的,因为每次验证都会使输入的另一部分失效。此解决方案依次检查每个字符,并截断到最后一个有效字符的长度。小提琴:https://jsfiddle.net/spwe4k21/

代码语言:javascript
复制
$(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);
}
票数 1
EN

Stack Overflow用户

发布于 2022-06-19 18:10:38

代码语言:javascript
复制
regex = /^[a-zA-Z]{1,2}\d{1,6}$/
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50171566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档