从2020年开始验证年份的正则表达式

Ted*_*Ted -1 python regex

我正在写一个正则表达式来验证从2020年开始的年份.

以下是我写的正则表达式,

^(20-99)(20-99)$
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用.任何人都可以指出哪里弄错了?

Can*_*ice 5

正则表达式不会采用这样的范围.你想要做的事情如下:

if( year >= 2020 )
  presto
Run Code Online (Sandbox Code Playgroud)

我是轻率的,因为你正在尝试使用正则表达式,你只需要使用直接的比较.如果你有一个字符串,首先将字符串转换为整数(如果你甚至需要用Python做).否则,你将会有一些难以维护的非常难看的正则表达式.

编辑:如果你在使用正则表达式(或三个)真正热衷,你的问题可以分为三个正则表达式:^20[2-9]\d$,^2[1-9]\d\d$,^[3-9]\d{3}$为四字年.你可以将这些结合起来^(20[2-9]\d|2[1-9]\d\d|[3-9]\d{3})$.

但请注意,正则表达式是a)丑陋如同地狱,并且b)只接受多达9999年.您可以通过明智地使用它来缓解这一点+,所以类似于:

^(20[2-9]\d+|2[1-9]\d{2,}|[3-9]\d{3,})$
Run Code Online (Sandbox Code Playgroud)

......可以工作

但我希望你会发现只是year >= 2020做得更好.

编辑2:地狱,这个正则表达式错误多年大于9999.你可能想要使用:

^(20[2-9]\d|2[1-9]\d{2}|[3-9]\d{3}|[1-9]\d{4,})$
Run Code Online (Sandbox Code Playgroud)

如果你进入像这样的一年,这仍然不起作用03852.