我输入的字符串包含各种格式的“年龄”,如下所示:
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);
答案 0 :(得分:0)
我建议以不同方式处理这两种情况(日期和年龄)。 如果您知道年龄将在x以下且年数超过y,那么您应该相应地过滤匹配。
多年来,正则表达式可以是:/(<![.'-])(\d\d)(?:/|,|$|\s*year)/
多年来:/[.- ](?:19)?(\d\d)\b(?!\syear|,)/
这是未经测试的。随意根据您的数据进行调整。