0

Java には、以下に一致する 4 つの正規表現があります。

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}

これらすべての正規表現の最小長と最大長を追加したいと思います。

4

2 に答える 2

0

アンカーされた先読みを使用して開始します。

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

^(?=.{2,10}$)は、「他の正規表現が続くに関係なく、入力全体は2〜10文字の長さでなければなりません」と述べています

于 2013-09-16T12:03:24.373 に答える
0

ほとんどすべてを書き直さなくても、これらの正規表現に最大長を適用するのは少し難しいでしょう。あなたの最善の策は、肯定的な先読みを使用することです。

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

これにより、zipが2〜10文字になるようになります

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

これにより、メールの長さが 64 文字になります。^(?=.{1,64}$)1 ~ 64 文字の場合は に変更します。

于 2013-09-16T12:04:02.610 に答える