给定一个日期,尝试使用正则表达式来确定输入是否大于或等于特定日期是否被视为反模式?例如,假设表单上有一个DOB文本字段:
DOB: 2011-02-49
我们希望确保用户超过X岁才能进行购买。在这个例子中,假设我们想要确保用户出生在2010年之前:
2010-01-01
我已经使用regex来处理gte/lte整数,但似乎与日期匹配会有点棘手。如何使用正则表达式来完成此操作?
e5nszbig1#
Regex不是最佳解决方案,因为每年都必须更新以接受新客户年龄X(因为这是新的一年)。再加上几个月和几天的复杂性,当尝试使用纯正则表达式时,它很快就会福尔斯,变成一个丑陋的烂摊子。如果你知道输入必须在之前的日期(不是动态的),这在正则表达式中是可能的
^(\d{1,3}|1\d{3}|200[0-9])-\d{2}-\d{2}
要确定的主要部分是年份((\d{1,3}|1\d{3}|200[0-9]))
(\d{1,3}|1\d{3}|200[0-9])
\d{1,3}
1\d{3}
200[0-9]
regex101
1条答案
按热度按时间e5nszbig1#
Regex不是最佳解决方案,因为每年都必须更新以接受新客户年龄X(因为这是新的一年)。再加上几个月和几天的复杂性,当尝试使用纯正则表达式时,它很快就会福尔斯,变成一个丑陋的烂摊子。
如果你知道输入必须在之前的日期(不是动态的),这在正则表达式中是可能的
要确定的主要部分是年份(
(\d{1,3}|1\d{3}|200[0-9])
)\d{1,3}
接受1000以下的年份(尽管不太可能)1\d{3}
接受从1000到1999200[0-9]
从2000年到2009年接受regex101