我想使用正则表达式找到大于或等于2014的年份(4位数字)。 [2014 - 9999]
我已尝试过此功能,但如果最后一位数小于4,则不匹配。
^[2-9]\d{1,}[1-9]0*[4-9]0*$
例如:3013
请帮帮我。
答案 0 :(得分:3)
请尝试使用以下正则表达式来匹配2014年至9999年的年份,
^(?:20(?:1[4-9]|[2-9][0-9])|2[1-9][0-9][0-9]|[3-9][0-9][0-9][0-9])$
<强>解释强>
20(?:1[4-9]|[2-9][0-9])
符合2014年至2099年的年份。2[1-9][0-9][0-9]
符合2100年至2999年的年份。[3-9][0-9][0-9][0-9]
匹配从3000到9999的年份。答案 1 :(得分:1)
显然,正则表达式是一种可怕的方法,所以我假设你这样做是作为一种心理锻炼,或作为家庭作业。无论哪种方式 - 像大多数编程问题一样,你可以通过将其分解为更小,更易于管理的块来解决这个问题:
(这可能不是最酷的解决方案,但很容易理解)
(参见Avinash Raj的答案,对于这样做的实际正则表达式)
答案 2 :(得分:1)
^[3-9]\d{3}|(2(0(1[4-9]|[2-9]\d)|[1-9]\d{2}))$
pass
2014
2015
3014
3000
9999
5014
fail
2013
0014
2012
1013
答案 3 :(得分:-1)
((?:20(?:(?:1[4-9])|(?:[2-9]\d)))|(?:2[1-9]\d\d)|(?:[3-9]\d\d\d))
正是您要找的。额外的周围括号是启用明确捕获或反向引用。