我的正则表达式代码[A-Z]{1,}d{3,}w?
可以很好地返回CX3623、M3326、Y2362等字符串,但我也希望能够返回以下格式的字符串:
YH321-2
V2021/V2022
1.2A-2351
YGH256-4268
我应该向正则表达式添加什么?
演示:https://regex101.com/r/MjPkFh/2
对于第一部分,您可以使用替换来匹配不同的格式。
您可以使用可选的非捕获组(?:...)?
使第二部分可选,并匹配/
或-
(可选(,后面跟着字符A-Z和1+数字。
b(?:[A-Z]+ )?(?:[A-Z]*d{3,}|d+(?:.d+)?[A-Z]+)(?:[/-][A-Z]*d+)?b
解释
b
字边界(?:[A-Z]+ )?
(可选(匹配1个字符A-Z,后跟一个空格(?:
非捕获组[A-Z]*d{3,}
匹配0次以上A-Z和3位或3位以上数字|
或d+(?:.d+)?[A-Z]+
将1个以上数字与可选小数部分和1个以上A-Z倍进行匹配
)
关闭组(?:
非捕获组[/-][A-Z]*d+
匹配/
或-
,0次以上A-Z和1次以上数字
)?
关闭组并使其成为可选b
字边界
Regex演示