ポートの次は、アドレスの書式の制限と言いたいところだが、
これを正規表現でやるのはさすがにしんどい。

(?:\*|(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\/(?:3[0-2]|[0-2]?\d))?)

完全に、バグの元だな、こりゃ。
こんなもん設定ファイルに書いたところで、
多分、後で保守するやつが発狂する程度の効果しかない。

ということで、別の手を考えよう。

これまで required, mask, maxlength 等のルールを使ったが、
これらルールは、組み込みで用意されているわけではない。
Commons Validator では、こういったルールも、
設定ファイルに記述して定義する必要がある。

ではなぜ上記のルールが使えたのかというと、
Validator プラグインを導入する際に、
Struts が用意した ルールの設定を取り込んだからだ。

改めて struts-config.xml の plug-in を読んでみると、
以下の 2 つのパスを登録していたはずだ。

/org/apache/struts/validator/validator-rules.xml
/WEB-INF/validation.xml

この上の方が、Struts Validator のルール定義である。
では、この内容を見てみよう。

Eclipse 等、jar 内を閲覧できる IDE を使うか、
jar コマンドを使って展開するか、
以下の URL (1.3.5) を参照すれば中身を見ることができる。

http://svn.apache.org/viewvc/struts/action/trunk/core/src/main/resources/org/apache/struts/validator/validator-rules.xml?revision=400346&content-type=text%2Fplain&pathrev=400346

このリソースも Validator 設定ファイルなので、
<form-validation> 要素をルートとする XML である。
<form-validation> 要素の中には <global> 要素があり、
<global> 要素の中には <validator> 要素がいくつもある。

<global> 要素は、その名前の通り、
全ての設定ファイルから参照される定義を含む。

<validator> 要素は、ルールの定義である。
よく見ると、required, mask 等、
見慣れた名前が並んでいることが分かると思う。

つまり、独自のルールを用意することができるわけだ。

発信アドレスや宛先アドレスの書式は、非常に複雑なので、
正規表現 1 発で扱うには不向きである。

ということで、アドレス用の独自ルールを作ることにしよう。