正则表达式匹配表示西班牙语日期的字符串

时间:2012-09-25 21:08:55

标签: php regex

我需要使用正则表达式来验证表示完整日期字符串的字符串(用西班牙语编写)...我不需要验证实际字符串是否是有效日期(闰年等等)。 。)

字符串如下所示:

23 de septiembre del 2003

23 de septiembre de 1965

如果年份大于2000年,则“del”这个词在一年之前使用,如果没有,则使用“de”这个词......

我做了我的研究,并找到了如何获得前2位数字:

$pattern = ([0-9]+);

..然后我迷失了如何将它们放在一起......

帮助!

1 个答案:

答案 0 :(得分:2)

/\b\d{1,2} de [a-z]+ (de 1\d{3}|del 2\d{3})/i

说明:

\b              ... requires a word boundary, since the following character is a digit
                    (and thus a word character) this will only match if the date is
                    preceded by a character that is not a letter, not a digit and
                    not an underscore
\d{1,2}         ... one or two digits
de              ... literally "de"
[a-z]+          ... any letter from a-z, at least once but an arbitrary number of times
(de 1\d{3}      ... literally "de" followed by "1" and 3 more digits
|               ... or
del 2\d{3})     ... literally "del" followed by "2" and 3 more digits

i               ... make the whole thing case-insensitive (you can omit this if needed)

另请注意,正则表达式中的所有空格都被视为与任何其他字符一样。

或者,您可以指定有效月份列表,而不是[a-z]+,而不是/\b\d{1,2} de (...|septiembre|...) (de 1\d{3}|del 2\d{3})/i

|

(将...替换为更多月份名称{{1}}以将其分开)