查找包含 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)
我想从文件中的行中找到那些
- 这些行以年份 YYYY 开头
^(202\d)
例如 2022
或 2023
- 后跟至少 1 个和最多 4 个大写字母 ABCD
[A-Z]{1,4}
或最多 3 个数字 \d{1,3}
和至少一个字母 [A-Z]{1}
例如 ABCD
或A123
或 1A23
或 123A
- 后跟
A
或 R
例子
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
在visual-studio-code i tested javascript regex (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) 按字面匹配
202
并且 \d
匹配数字(相当于 [0-9])
- 第二捕获组 (\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})
- 2 Group 1st Alternative
\d
匹配一个数字(相当于 [0-9]){0,3} 匹配前一个标记 0 到 3 次
- 2 Group 1st Alternative 匹配下面列表中的单个字符 [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
对于 (xxxx)
应该包含至少 1 个大写字母且不超过 3 个数字?
测试 my demo
您的最终正则表达式也将匹配以下两行,因为第二部分最多允许 3+4+4 个字符,并且也只允许 1 个字母:
2022999BBBB9999A
2022BA
对于必须有4个字母数字的部分,包括至少一个字母,您可以这样表达该条件:
- 正好匹配四个数字或大写字母的字符
- 要求其中一个必须是大写字母,使用look-ahead
像这样:
我想从文件中的行中找到那些
- 这些行以年份 YYYY 开头
^(202\d)
例如2022
或2023
- 后跟至少 1 个和最多 4 个大写字母 ABCD
[A-Z]{1,4}
或最多 3 个数字\d{1,3}
和至少一个字母[A-Z]{1}
例如ABCD
或A123
或1A23
或123A
- 后跟
A
或R
例子
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
在visual-studio-code i tested javascript regex (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) 按字面匹配
202
并且\d
匹配数字(相当于 [0-9]) - 第二捕获组 (\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})
- 2 Group 1st Alternative
\d
匹配一个数字(相当于 [0-9]){0,3} 匹配前一个标记 0 到 3 次 - 2 Group 1st Alternative 匹配下面列表中的单个字符 [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
对于 (xxxx)
应该包含至少 1 个大写字母且不超过 3 个数字?
测试 my demo
您的最终正则表达式也将匹配以下两行,因为第二部分最多允许 3+4+4 个字符,并且也只允许 1 个字母:
2022999BBBB9999A
2022BA
对于必须有4个字母数字的部分,包括至少一个字母,您可以这样表达该条件:
- 正好匹配四个数字或大写字母的字符
- 要求其中一个必须是大写字母,使用look-ahead
像这样: