正则表达式格式 "YYYY/NNNN" 或 "YYYY/NNNN/Country code"

Regexp format "YYYY/NNNN" or "YYYY/NNNN/Country code"

我有这个正则表达式:(\d{4})\/(\d{2,4})\/?(\w{2})?,它似乎可以正常工作,但我想避免以下情况,例如:我有一个字符串“2020/2000/WEEEE”并且它匹配它。

它匹配的其他错误示例:“IEN/BSK-2020/143999”.

如何避免这种情况,只从上面获取指定格式的字符串? “YYYY/NNNN”和“YYYY/NNNN/国家代码”

您可以将第一部分与数字和正斜杠匹配,并使整个最后部分包括 / 可选,使用 (?!\S)[=16= 在右侧断言空白边界]

\b(\d{4})\/(\d{2,4})(?:\/(\w{2}))?(?!\S)

Regex demo

更精确一点的模式,其中国家代码只能是字符 a-z,并且不转义正斜杠(当它不是定界符时)。如果您不需要将 3 个捕获组作为单独的值进行处理,则可以省略它们。

\b(\d{4})/(\d{2,4})(?:/([a-zA-Z]{2}))?(?!\S)

Regex demo