当前位置: 首页 > 知识库问答 >
问题:

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

金正阳
2023-03-14

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

  • 行以年YYYY^(202\d)开头,例如20222023
  • 后跟至少1个和最多4个大写字母ABCD[A-Z]{1,4}或最多3个数字\d{1,3}和至少一个字母[A-Z]{1}例如ABCDA1231A23123A
  • 后跟AR

例子

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

在可视化工作室代码中,我测试了javascript正则表达式(请参阅我 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
  • 在行首
  • 第一个捕获组 (202\d) 从字面上匹配 202\d 匹配一个数字(相当于 [0-9])
  • 2nd Capture Group (\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})
  • 2 组 1st 备选方案 \d 匹配一个数字(相当于 [0-9]){0,3} 匹配 0 到 3 次之间的前一个标记
  • 2 组 1st 备选方案匹配下面列表中存在的单个字符 [A-Z] {1,4} 匹配前一个标记 1 到 4 次
  • 其他替代方案 | 是第一个替代方案的变体

我想知道是否有比

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

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

用我的演示测试

共有1个答案

戚研
2023-03-14

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

2022999BBBB9999A
2022BA

对于必须包含 4 个字母数字(至少包含一个字母)的部分,您可以按如下方式表示该条件:

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

喜欢这个:

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

 类似资料: