正则表达式以YYYY-MM-DD格式匹配日期

End*_*r28 0 php regex preg-match

我在PHP中有一个正则表达式,它以YYYY-MM-DD的格式查找日期

我有的是: [\d]{4}-[\d]{2}-[\d]{2}

我正在使用preg_match来测试日期,问题是2009-11-10有效的,但2009-11-1033434也可以.自从我完成正则表达式以来已经有一段时间了,我如何确保它在正确的位置停止?我已经尝试过/([\d]{4}-[\d]{2}-[\d]{2}){1}/,但它返回相同的结果.

任何帮助将不胜感激.

Lil*_*ard 9

你需要的是锚,特别是^$.前者匹配字符串的开头,后者匹配结束.

我要说的另一点[]是不必要的.\d保留其在字符范围之外的含义.

所以你的正则表达式应该是这样的:/^\d{4}-\d{2}-\d{2}$/.


小智 5

^20[0-2][0-9]-((0[1-9])|(1[0-2]))-([0-2][1-9]|3[0-1])$
Run Code Online (Sandbox Code Playgroud)

我加了一些额外的检查,以帮助的问题MM,并DD通过用户使用混合起来。这没有捕捉到所有日期mixups,但确实保持YYYY部分之间20002029中,MM之间0112DD之间0131