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}/,但它返回相同的结果.
任何帮助将不胜感激.
你需要的是锚,特别是^和$.前者匹配字符串的开头,后者匹配结束.
我要说的另一点[]是不必要的.\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部分之间2000和2029中,MM之间01和12与DD之间01和31