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

问题描述 投票:0回答:1

我的正则表达式代码[A-Z]{1,}\d{3,}\w?可以很好地返回字符串,例如CX3623,M3326,Y2362,但我也希望能够返回以下格式的字符串:

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

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

javascript regex string match regular-language
1个回答
0
投票

对于第一部分,您可以使用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+个数字
  • [)?关闭组并使其可选]
  • $字符串结尾

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.