- PR -

Validator で 整数値の正規表現

1
投稿者投稿内容
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-08-13 13:31
お疲れ様です。

現在、StrutsでWEBアプリを開発しております。

そこで、入力チェックにValidatorを使おうということになり、
早速インテグレーションしてみました。

NO(整数値)を入力するフィールドがあり、
そのフィールドを検証対象としました。

NOはINTEGERの範囲を超える使用になっており、
depends に required と long を使ってみました。
------------------------------------------------------------
<field property="no" depends="required, long">
<arg0 key="test.header" resource="true" />
<arg1 key="${var:maxlength}" resource="false" />
</field>

------------------------------------------------------
この場合、正常に動作はするのですが、
サーバサイドのみのチェックになり、
JavaスクリプトのAlertは実行されません。

JSのAlertを出したいので、
超苦手の正規表現を使ってみることにしました。

-----------------------------------------------------
<field property="no" depends="required, mask, maxlength">
<arg0 key="test.header" resource="true" />
<arg1 key="${var:maxlength}" resource="false" />
<var>
<var-name>mask</var-name>
<var-value>[0-9]+</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>18</var-value>
</var>
</field>

-------------------------------------------------------
必須入力で、18桁までの整数値をチェックしようとしています。

結論から言いますと期待する動作になりません。

入力値  結果
1 OK
11 OK
a ERROR
a1 OK
1a OK

となりました。

[0-9]+でa1と1aがOKになるのは理解できませんが、
*[0-9]+*と判断されているのではないかと思います。

この場合、どのように記述すればよいのでしょうか。

知識がなく皆様の力を貸してください。
佐々木
大ベテラン
会議室デビュー日: 2003/03/30
投稿数: 121
投稿日時: 2004-08-13 13:44
引用:

[0-9]+でa1と1aがOKになるのは理解できませんが、
*[0-9]+*と判断されているのではないかと思います。



"[0-9]+"は、任意個の数字にマッチしますよね。"a1"の"1"にマッチしてるんです。それだけで"[0-9]+"はもう満足。「それ以外の文字列が含まれていない」という言明はどこにもないのです。

"^[0-9]+$"と書くとお望みの動作になると思います。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-08-13 13:51
佐々木さん、レスありがとうございました。

期待通りの動作が確認できました。

超基本的なことですよね。。。これ。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)