正则表达式检查字符串是否包含年份

时间:2017-06-17 07:32:44

标签: java regex

我想要一个匹配今年与连字符分开的正则表达式。实例

1986-2004
2001-2007 

基本上它应该每年只允许4位数而不是更少或更多,它应该用连字符分隔。

我试图在1986年建立比​​赛的正规格 -

^[0-9]{4}+[-]{1}+[0-9]*$ 

当我尝试这样的事情时

^[0-9]{4}+[-]{1}+[0-9]{4}*$

{4}去年它出现了模式错误。请帮助我如何在模式的末尾添加{4}

3 个答案:

答案 0 :(得分:2)

*表示“任意次数”,与{4}发生冲突,意味着“四次”。只需删除*就可以了:

^[0-9]{4}+[-]{1}+[0-9]{4}$

答案 1 :(得分:0)

你去了:

^[0-9]{4}+[-]{1}+[0-9]{4}$

这是一个很好的在线实用程序来验证您的正则表达式:RegexPlanat

答案 2 :(得分:0)

您的正则表达式也允许使用以下年份:8970-9047,0120-0110,0000-0000。可能会更好地使用模式,这将检查边界。例如,像这样:

\b(18|20)\d{2}\b[-]\b(18|20)\d{2}\b