2011-05-06 226 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})$/