我需要一个可以处理这些日期格式的正则表达式:
这是可能的还是我最好为每种格式创建多个正则表达式?
答案 0 :(得分:4)
您可以使用管道(\ |)来组合正则表达式,因此只要您可以为每个表达式编写正则表达式,就可以将它们全部粘贴在一起,例如:这应该与前两个日期匹配:“\([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呢?
答案 1 :(得分:2)
尝试\d{2,4}[-/]\d{1,2}[-/]\d{1,4}
http://regexr.com?36goq - 参见行动
答案 2 :(得分:1)
您最好使用|
的不同格式验证器,例如:
/\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
但是请注意,验证日期和发现它的发生不是同一个问题。您的所有日期都是standard strtotime的有效日期 - 因此您可以使用该事实来验证(而不是搜索)您的日期。