【问题标题】:Restrict user to type numbers or alphabets in input type限制用户在输入类型中键入数字或字母
【发布时间】:2020-12-30 13:26:42
【问题描述】:

有没有办法限制用户输入错误的序列,我的意思是允许用户只输入前两个字符作为字母,然后输入接下来的两个作为数字,接下来的两个作为字符,然后剩下的 4 个作为数字。基本上我想对字符的顺序施加限制。 印度车辆登记号的格式不应因输入错误而改变。 样本输出应该是

HR 23 DU 2323

vehicleNumberFormat() {
    const { value } = this.myForm.get('vehicleNumber');
    console.log('value', value);

    const regex = /^(\w{0,2})(\w{0,2})(\w{0,2})(\w{0,4})$/g
    // const onlyNumbers = value.replace(/[^\d]/g, '')
    const typedValue = value.replace(/[^\w]/g, '')
    console.log('typedValue->', typedValue)

    const formatedVehicleNumber = typedValue.replace(regex, (regex, $1, $2, $3, $4) =>
      [$1, $2, $3, $4].filter(group => !!group).join(' ')
    )

    console.log('formatedVehicleNumber-->', formatedVehicleNumber.toUpperCase())
    this.myForm.controls['vehicleNumber'].setValue(formatedVehicleNumber.toUpperCase());
    
    return formatedVehicleNumber;
  }

这里是代码库stackblitz

【问题讨论】:

  • 我相信应该是/^([a-z]{2})(\d{2})([a-z]{2})(\d{2})$/gi
  • 我猜你想要一些与 stackoverflow.com/a/26202266/2398020 相关的东西来处理输入表单?
  • @MingweiSamuel 不行,我试过了。感谢您的回复:-)

标签: javascript regex angular typescript angular9


【解决方案1】:

我认为以下正则表达式应该足以满足您的需要

^([a-zA-Z]{2})\s+(\d{2})\s+([a-zA-Z]{2})\s+(\d{4})$

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多