求助:使用正则表达式匹配各类德语格式日期的优化方案
适配所有格式的正则方案
建议搭配正则不区分大小写修饰符使用,压缩版如下:
(?:(0?[1-9]|[12]\d|3[01])[\s.:\/\-]+(?:0?[1-9]|1[012]|(?:J(anuar|u(n|li))|Februar|Mä(rz|i)|A(pril|ugust)|(((Sept|Nov|Dez)em)|Okto)ber)|(?:Jan|Feb|Mär|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dez)\.?)[\s.:\/\-]+(19|20)\d{2})|(?:(0?[1-9]|[12]\d)[\s.:\/\-]+(?:0?2|Feb(?:ruar)?\.?)[\s.:\/\-]+(?:(?:19|20)(?:[02468][048]|[13579][26])|(?:19|20)\d{2}(?<=\d\d)(?<!(?:[02468][048]|[13579][26]))))
适配说明
- 分隔符兼容:支持
.、/、:、-四类分隔符,允许分隔符前后带任意空格,也允许连续多个分隔符,覆盖07..4..1995、14 .03 - 1995这类不规范格式 - 月份兼容:同时支持数字月份、德语月份全称、德语3位缩写(缩写后可选带点),开启不区分大小写修饰符后可自动适配大小写混用场景
- 位数兼容:支持单数字的日、月,覆盖
9.4.1997这类格式 - 校验逻辑保留:完整保留原有月份天数校验、闰年2月校验规则,不会出现非法日期匹配问题
测试验证
你提供的所有测试用例均可正常匹配:
- Juni 1997 ✅
- 01.Aug.1995 ✅
- 27.06. 1997 ✅
- 29.02.1996 ✅
- 1999 ✅
- 28.05. 1996 ✅
- 07..4..1995 ✅
- 20:03:1998 ✅
- 9.4.1997 ✅
- 14 .03 - 1995 ✅
内容的提问来源于stack exchange,提问作者id345678
相关产品推荐
相关产品推荐

