【问题标题】:Validate a 4-digit year using a range with regular expressions使用带有正则表达式的范围验证 4 位数年份
【发布时间】:2017-10-31 01:30:09
【问题描述】:

我想做一些类似于这篇文章中要求的事情: Regex Valid Year check

我想做类似的事情,但仅限于 2011 年和 2099 年之间的年份?

谢谢, 马克

【问题讨论】:

  • 那你为什么需要一个正则表达式呢?
  • 最快的方法..
  • 其中一个人在 1900 年至 2099 年间拥有这个 ^(19|20)\d{2}$
  • 最快的方法是if (year >= 2011 && year <= 2099) { ... }
  • 在编码方面最快?测试?维护?跑步吗?

标签: java regex validation date


【解决方案1】:

我的喜好是解析为整数 (Integer.parseInt()) 并使用 <= 或类似的方法检查边界。但是如果你坚持正则表达式:

^20(1[1-9]|[2-9][0-9])$

第一个案例涵盖 2011-2019 年,另一个案例涵盖 2020-2099 年。我没有测试过。

【讨论】:

    【解决方案2】:

    这是一个例子

    ^20((1[1-9])|([2-9][0-9]))$
    

    从 2011 年到 2099 年完全匹配

    【讨论】:

    • 如果您删除多余的括号,则答案与 Ole V.V. 相同
    【解决方案3】:

    试试这个:

    ^20[1-9][0-9]$
    

    ^2020 开头 [1-9] 后跟 1,2,3,4,5,6,7,8,9 [0-9] 后跟 0,1,2,3,4,5,6,7,8,9

    编辑: 它也将接受 2010 年。

    看到这个Answer by Ole V.V.

    【讨论】:

    • 是的,它会的。我测试了你的答案,效果很好
    • 感谢您这样做。为了幸福的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多