我的正则表达式代码[A-Z]{1,}\d{3,}\w?
可以很好地返回字符串,例如CX3623,M3326,Y2362,但我也希望能够返回以下格式的字符串:
YH321-2
V2021/V2022
1.2A-2351
YGH256-4268
我应该在正则表达式中添加什么?
对于第一部分,您可以使用alternation匹配不同的格式。
您可以使用可选的非捕获组(?:...)?
将第二部分设置为可选,并匹配/
或-
并可选地后跟字符A-Z和1+数字。
^(?:[A-Z]+\d{3,}|\d+(?:\.\d+)?[A-Z]+)(?:[\/-][A-Z]*\d+)?$
说明
^
字符串的开头(?:
非捕获组[A-Z]+\d{3,}
匹配1+次A-Z和3个或更多数字|
或\d+(?:\.\d+)?[A-Z]+
匹配1+个数字,一个可选的小数部分和1+个字符A-Z)
封闭组(?:
非捕获组[\/-][A-Z]*\d+
匹配/
或-
,0 +次A-Z和1+个数字)?
关闭组并使其可选]$
字符串结尾