更新我的正则表达式以包含点和连字符

Updating my regex to include dots and hyphens

我的正则表达式代码 [A-Z]{1,}\d{3,}\w? 工作正常 returning 像 CX3623、M3326、Y2362 这样的字符串,但我也希望能够 return 以下格式的字符串:

YH321-2
V2021/V2022
1.2A-2351
YGH256-4268

我应该在正则表达式中添加什么?

演示:https://regex101.com/r/MjPkFh/2

对于第一部分,您可以使用 alternation.

匹配不同的格式

您可以使用可选的非捕获组 (?:...)? 使第二部分成为可选的,并匹配 /- 可选地后跟字符 A-Z 和 1+ 个数字。

\b(?:[A-Z]+ )?(?:[A-Z]*\d{3,}|\d+(?:\.\d+)?[A-Z]+)(?:[\/-][A-Z]*\d+)?\b

说明

  • \b 字边界
  • (?:[A-Z]+ )? 可选择匹配 1+ 个字符 A-Z 后跟 space
  • (?:非捕获组
    • [A-Z]*\d{3,} 匹配 0+ 次 A-Z 和 3 个或更多数字
    • |
    • \d+(?:\.\d+)?[A-Z]+ 匹配 1+ 个带可选小数部分的数字和 1+ 次 A-Z
  • ) 关闭群组
  • (?:非捕获组
    • [\/-][A-Z]*\d+ 匹配 /-,0+ 次 A-Z 和 1+ 位数字
  • )?关闭群组并设为可选
  • \b 字边界

Regex demo