2011-05-06 928 views
3
M/D/YY /^(\d{1,2})\/(\d{1,2})\/(\d{2})$/   
M-D-YY /^(\d{1,2})\-(\d{1,2})\-(\d{2})$/ 
M.D.YY /^(\d{1,2})\.(\d{1,2})\.(\d{2})$/ 

回答

3
/^(\d{1,2})([\/.-])(\d{1,2})\2(\d{2})$/ 

小心,现在有一个新的捕获组,所以今年的反向引用数将是4而不是3。

如果您还想允许M/D-YY等,那么你可以使用

/^(\d{1,2})[\/.-](\d{1,2})[\/.-](\d{2})$/ 
+0

蒂姆,我冒昧地把'-'放在char类的最后。 – 2011-05-06 11:16:51

+0

可以检查你在这里的答案http://gskinner.com/RegExr/ – isxaker 2011-05-06 11:18:00

+0

分隔符组中的非转义'.'将匹配任何字符。 – 2011-05-06 11:24:54

2

最简单的方法就是写:

(r1)|(r2)|(r3) 

其中RI是你的正则表达式。你可以将常用的部分,当然,像锚,因此

^(?:(r1)|(r2)|(r3))$ 

事实上,在你的情况下,正则表达式的区别仅在于使用的分隔符,所以你可以把它们放在一个字符类来获得一个常见的正则表达式。

+0

在'^情况(r1)|(r2)|(r3)$',只有'r1'被锚定到字符串的开头,而'r3'被锚定到结尾。你可能意思是:'^(?:(r1)|(r2)|(r3))$' – 2011-05-06 11:12:50

+1

是的,你是对的。 – Ingo 2011-05-06 11:14:22

+0

简单的方法)... – isxaker 2011-05-06 11:30:16

1

您需要拍摄第一分离器,做一个反向参考:

/^(\d{1,2})([\/-\.])(\d{1,2})\2(\d{2})$/