Javascript 用于在<;中重复(类似)表达式的正则表达式;输入>;JQuery

Javascript 用于在<;中重复(类似)表达式的正则表达式;输入>;JQuery,javascript,regex,Javascript,Regex,我有一个带有文章编号的输入文本字段,如下所示: ABC_ABC123; AB__B2A4; ABF_323WET; ... 因此,我想请用户保留艺术编号格式 这是我的正则表达式,它适用于一个艺术编号: var mask1 = /^([A-Z]{2})([A-Z|_]{1})_([A-Z0-9]{0,16});$/; 但我想把它扩展到更多的字符串/艺术编号 我怎样才能解决这个问题 谢谢 在单项目模式中,匹配小写字母有问题,必须将它们添加到字符类,[a-Z0-9]{0,16}=>[a-Za-Z0

我有一个带有文章编号的输入文本字段,如下所示:

ABC_ABC123; AB__B2A4; ABF_323WET; ...
因此,我想请用户保留艺术编号格式

这是我的正则表达式,它适用于一个艺术编号:

var mask1 = /^([A-Z]{2})([A-Z|_]{1})_([A-Z0-9]{0,16});$/;
但我想把它扩展到更多的字符串/艺术编号

我怎样才能解决这个问题


谢谢

在单项目模式中,匹配小写字母有问题,必须将它们添加到字符类,
[a-Z0-9]{0,16}
=>
[a-Za-Z0-9]{0,16}

总体解决方案如下所示

/^[A-Z]{2}[A-Z_]_[A-Za-z0-9]{0,16};(?: [A-Z]{2}[A-Z_]_[A-Za-z0-9]{0,16};)*$/

详细信息

  • ^
    -字符串的开头
  • [A-Z]{2}[A-Z}{[A-Za-z0-9]{0,16}-您的项目模式:
    
    • [A-Z]{2}
      -两个大写ASCII字母
    • [A-Z]
      -大写ASCII字母或
    • 字符
    • [A-Za-z0-9]{0,16}
      -0到16个字母数字ASCII字符
    • -分号
  • (?:[A-Z]{2}[A-Z}[A-Za-z0-9]{0,16};)*
    -0次或多次出现
    • -空格(替换为
      \s
      以匹配构造函数符号中的任何空白,
      \\s
    • [A-Z]{2}[A-Z}{[A-Za-z0-9]{0,16}-项目模式
  • $
    -字符串结束
在JS中,您可以动态构建模式以使其可读:

var block=“[A-Z]{2}[A-Z_].[A-Za-z0-9]{0,16};”
var regex=new RegExp(`^${block}(?:${block})*$`)

console.log(regex.test(“ABC_abc123;AB_B2A4;ABF_323; wet;”)
Try
/^[A-Z]{2}[A-Z}[A-Za-z0-9]{0,16};(?:[A-Z]{2}[A-Z]{A-Za-z0-9]{0,16};)*$/
,请参阅。谢谢,它很管用!你能给我写一个简短的解释吗?我想准确地理解它。再次感谢!我不想接受小写字母,输入样式将是大写。@MátéKiss您的示例中有
ABC_abc123
。如果你不想匹配,你需要编辑你的问题。@MátéKiss无论如何,你可以随意修改正则表达式,使用动态构建,它会变得更容易处理。