作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个适用于 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 个数字。
它不起作用。
最佳答案
使用捕获组分解值,然后检查捕获组内的值是否与有效日期匹配:
^([\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 )来试验和验证此正则表达式。
采用上述方法,但在数字捕获组上发挥更多创意,仅包含所需的日期范围。请参阅 Matching Numeric Ranges with a Regular Expression:
上述网站的示例:
^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]) $
^(0?[0-9]?[0-9]|1[01][0-9]|12[0-7])$
^([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$
但是,这种方法非常难以维护,只有在无法单独使用选项 1 时才应使用。
关于java - XXXXRCYYYYMMDDnnnnnnnn 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336046/
我正在尝试创建一个适用于 XXXXRCYYYYMMDDnnnnnnnn 字符串的正则表达式。 我试过了 ^[A-Z]{6}(?
我是一名优秀的程序员,十分优秀!