查找包含 1 到 4 个大写字母和 0 到 3 个数字的字符串(visual studio 代码,javascript 正则表达式)

Find a string that contains 1 to 4 uppercase letters and 0 to 3 digits (visual studio code, javascript regex)

我想从文件中的行中找到那些

例子

YYYYxxxxA   // find rows that match 2022xxxxA
2022A150A   // relevant matches
2022B260A   //     "
20223A70A   //     "
20224B84A   //     "
20224B  A   // not relevant due to spaces \s\s 
20221234A   // not relevant due to 4 digits and no letter

i tested (see my demo@regex101.com)

这两个正则表达式似乎有效

2022(\d\D\w\w|\D\d\w\w|\d\d\D\w|\d\d\w\D|\D\D\D\D)A
// or
^(202\d)(\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})([\dA-Z]{0,4})A

来自regex101.com

的解释

问题

我想知道是否有比

更好的选择
^(202\d)(\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})([\dA-Z]{0,4})A

对于 (xxxx) 应该包含至少 1 个大写字母且不超过 3 个数字?

测试 my demo

您的最终正则表达式也将匹配以下两行,因为第二部分最多允许 3+4+4 个字符,并且也只允许 1 个字母:

2022999BBBB9999A
2022BA

对于必须有4个字母数字的部分,包括至少一个字母,您可以这样表达该条件:

  • 正好匹配四个数字或大写字母的字符
  • 要求其中一个必须是大写字母,使用look-ahead

像这样:

^(202\d)(?=.{0,3}[A-Z])([\dA-Z]{4})A