gpt4 book ai didi

java - XXXXRCYYYYMMDDnnnnnnnn 的正则表达式

转载 作者:行者123 更新时间:2023-12-02 12:13:52 25 4
gpt4 key购买 nike

我正在尝试创建一个适用于 XXXXRCYYYYMMDDnnnnnnnn 字符串的正则表达式。

我试过了

^[A-Z]{6}(?<!\\d)(?:(?:20\\d{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[1,3-9]|1[0-2])(?:29|30)))|(?:(?:20(?:0[48]|[2468][048]|[13579][26]))0229)|(?:20\\d{2})(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\\d|2[0-8]))(?!\\d){8}([\\d]{8}$

XXXXRC 是 6 个字符,YYYYMMDD 是日期,n 是任意数字。

这将查找前 6 个字符,然后查找 YYYYMMDD,然后查找8 个数字

它不起作用。

最佳答案

选项 1:

使用捕获组分解值,然后检查捕获组内的值是否与有效日期匹配:

^([\w]{4})([\w]{2})([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{8})$

这将匹配类似:ABCDZY1999123101234567到以下组中:

(ABCD)(ZY)(1999)(12)(31)(01234567)
^ ^ ^ ^ ^ ^
| | | | | |
| | | | | group 5
| | | | group 4
| | | group 3
| | group 2
| group 1
group 0

在本例中,第 2、3 和 4 组将组成日期组件。您可以通过众多在线正则表达式测试程序之一(例如 regex101.com )来试验和验证此正则表达式。

选项 2:

采用上述方法,但在数字捕获组上发挥更多创意,仅包含所需的日期范围。请参阅 Matching Numeric Ranges with a Regular Expression:

上述网站的示例:

  • 000..255:^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
  • 0 或 000..255:^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]) $
  • 0 或 000..127:^(0?[0​​-9]?[0-9]|1[01][0-9]|12[0-7])$
  • 0..999:^([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$

但是,这种方法非常难以维护,只有在无法单独使用选项 1 时才应使用。

关于java - XXXXRCYYYYMMDDnnnnnnnn 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com