我需要一个可以处理这些日期格式的正则表达式:
- 2010-1-1
- 2010-6-01
- 2010-06-1
- 2010 年 10 月 10 日
- 2010 年 10 月 10 日
- 2010/10/10
这是可能的还是我最好为每种格式创建多个正则表达式?
我需要一个可以处理这些日期格式的正则表达式:
这是可能的还是我最好为每种格式创建多个正则表达式?
您可以使用管道 (\|) 来组合正则表达式,因此只要您可以为其中的每一个编写一个正则表达式,您就可以将它们全部粘贴在一起,例如这应该匹配前两个日期:"\([12 ][0-9][0-9][0-9]-[1-9]-[1-9]\|[12][0-9][0-9][0-9]-[ 0-9]-0[1-9]\)" (您尚未明确指定格式,因此这可能需要针对您的实际问题进行概括。)
但是,您可能需要考虑一些更大的问题。
10-11-2010 究竟是什么意思?是 10 月 11 日,还是 11 月 10 日?
您是否只假设有效日期?2010-1-32 你打算怎么做?2010 年 2 月 29 日呢?
您最好使用不同的格式验证器|
,例如:
/\b[\d]{4}-[\d]-[\d]\b
|
\b[\d]{4}-[\d]{1,2}-[\d]{1,2}\b
|
\b[\d]{2}-[\d]{2}-[\d]{4}\b
|
\b[\d]{2}\/[\d]{2}\/[\d]{4}\b
|
\b[\d]{4}\/[\d]{2}\/[\d]{2}\b/x
但请注意,验证日期和发现它的发生不是同一个问题。根据标准 strtotime ,您的所有日期都是有效日期- 因此您可以使用该事实来验证(而不是搜索)您的日期。
试试\d{2,4}[-/]\d{1,2}[-/]\d{1,4}
http://regexr.com?36goq - 看看实际情况