正则表达式找到周日期

时间:2018-02-01 09:11:24

标签: regex

我们正在接收客户提供的文件,我们需要阅读并将一些价值保存到ERP系统中。

客户以星期格式向我们发送日期:201814这意味着2018年的第14周

客户永远不会在文件中的同一位置发送此日期,因此我认为我可以获得此日期的唯一方法是通过正则表达式搜索文件中的字符串。

我的正则表达式应该包含以下条件:

  • 字符串的长度始终为6个字符
  • 所有字符均为数字值
  • 字符串始终以20
  • 开头
  • 最后两个值必须介于0153
  • 之间

完美的正则表达式是什么?还有很多其他的" nummeric-only"文件中的值,这就是我需要如此具体的原因

我知道我可以像{1,6}这样处理长度条件,我知道[0-9]匹配从0到9的所有数字,但我无法看到如何限制01到53

有人可以用我的正则表达式帮助我吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

\b20\d{2}(?:0[1-9]|[1-4]\d|5[0-3])(?!\d)

Demo

说明:

  1. \b字符串指示符的字边界开始
  2. 20文学上必须以20
  3. 开头
  4. \d{2}后跟任意两位数字

  5. (?:非捕获组从此处开始

  6. 0[1-9]表示01至09

  7. [1-4]\d表示10到49

  8. 5[0-3]表示50-53

  9. )结束非捕获组

  10. (?!\d)否定前瞻以确保不遵循整个匹配 一个数字。整个正则表达式的形成方式使您不需要测量6位数;好像它不是6位数,那么上述条件就不会得到满足。

答案 1 :(得分:0)

使用此:(20)\d{2}([1-4][0-9]|[0][1-9]|[5][1-3])

Demo