我需要使用正则表达式来验证表示完整日期字符串的字符串(用西班牙语编写)...我不需要验证实际字符串是否是有效日期(闰年等等)。 。)
字符串如下所示:
23 de septiembre del 2003
23 de septiembre de 1965
如果年份大于2000年,则“del”这个词在一年之前使用,如果没有,则使用“de”这个词......
我做了我的研究,并找到了如何获得前2位数字:
$pattern = ([0-9]+);
..然后我迷失了如何将它们放在一起......
帮助!
答案 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}}以将其分开)