PHP正则表达式可选的非匹配组?

时间:2011-07-21 05:08:00

标签: php regex date

我正在尝试制作一个日期正则表达式,允许从1900年到2099年,使用19或20个可选项。

我差不多了,但我找不到允许19或20个可选部分的方法。这就是我所拥有的:

(?:20)(?:19)?[0-9][0-9]

测试结果:

String    preg_match     is this ok? 
======    ==========     ===========
55         yes             yes
1955       yes             yes
2055       yes             yes
201955     yes             no

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

这样做:

^(?:19|20)?\d{2}$

它说:

^ =字符串开头

(?: 19 | 20)? =匹配19或20而不捕获,零次或一次

\ d {2} = 2位小数

$ =字符串结尾

答案 1 :(得分:1)

((20)|(19))? 

管道的意思是“OR”,由于问号

,它们是可选的