从不同的输入日期格式中提取年份/年龄

时间:2011-03-19 11:36:20

标签: php regex

我输入的字符串包含各种格式的“年龄”,如下所示:

Input           What it means
28/          -> 28 years
5.4.83       -> 2011-1983 = 28 years
june'82      -> 2011-1982 = 27 years
21.6.83 /    -> 2011-1983 = 28 years
oct'79 /164  -> 2011-1979 = 32 years
17-1-84 2
31.08.82 6
21.10.80/5
(MAR 83.5
JAN 1987
31,
25 year
25 years
31year       -> 31 years
31years       -> 31 years

我需要制作适当的正则表达式来计算人的年龄。从2011年开始减去生育年份就足够了。

我使用的是“足够好”,但我想知道我能不能做得更好?

preg_match_all("/[^0-8](\d{2})[\/;\. ]/", $row[text], $matches, PREG_PATTERN_ORDER);

1 个答案:

答案 0 :(得分:0)

我建议以不同方式处理这两种情况(日期和年龄)。 如果您知道年龄将在x以下且年数超过y,那么您应该相应地过滤匹配。

多年来,正则表达式可以是:/(<![.'-])(\d\d)(?:/|,|$|\s*year)/

多年来:/[.- ](?:19)?(\d\d)\b(?!\syear|,)/

这是未经测试的。随意根据您的数据进行调整。