2013-09-16 22 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个字符。