2013-09-16 19 views
0

Java正則表達式我有Java的四次常規表達式匹配的是:的郵編,電話,電子郵箱和日期

Zip code : ([0-9]*)([0-9\\-])([0-9]+) 
telephone: ([0-9]+)([\\-]?)([0-9]+)([\\-]?)([0-9]+) 
email : ([a-z0-9_\\.-]+)@([\\da-z\\.-]+)([\\da-z]+)\\.([a-z]+) 
date  : ((19|20)\\d\\d)[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]) 
and ((19|20)\\d\\d)(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01]) 

他們正在爲我的預期。但是如果我將最大長度和最小長度應用於整體,它們不再匹配。

例如:

zip : ([0-9]*)([0-9\\-])([0-9]+).{2,10} 
email: ([0-9]+)([\\-]?)([0-9]+)([\\-]?)([0-9]+).{64} 

我想補充的最小​​和最大長度爲所有這些正則表達式。

+0

您的意思是Javascript或Java? – reporter

+0

現在在Java比我會實現相同的JavaScript – shahinbd

+0

@shahinbd任何運氣與正則表達式? – Jerry

回答

0

使用前瞻錨開始,如

^(?=.{2,10}$)([0-9]*)([0-9\\-])([0-9]+) 

表達^(?=.{2,10}$)說:「不管什麼其他的正則表達式如下,整個輸入必須是2-10個字符長」

0

這將這些正則表達式的最大長度應用於某些方面會有點困難,而不必重寫幾乎所有東西。最好的辦法可能是使用正前瞻:

zip : ^(?=.{2,10}$)([0-9]*)([0-9\\-])([0-9]+) 
     ^^^^^^^^^^^^^ 

這將確保拉鍊爲2至10個字符

email : ^(?=.{64}$)([0-9]+)([\\-]?)([0-9]+)([\\-]?)([0-9]+) 
     ^^^^^^^^^^^ 

之間這將確保該電子郵件是64個字符長。更改爲^(?=.{1,64}$) 1至64個字符。