0

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

字符串如下所示:

23 de septiembre del 2003

23 de septiembre de 1965

如果年份大于 2000,则在年份之前使用“del”一词,如果不是,则使用“de”一词...

我做了我的研究,发现如何获得前 2 位数字:

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

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

帮助 !

4

1 回答 1

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

(用更多的月份名称替换 ...|以将它们分开)

于 2012-09-25T21:13:04.180 回答