Validationによる属性チェック

ASTERIA Warpでこんなことできる?…と思うことなど、ご遠慮なく...(^_-)

Validationによる属性チェック

投稿記事by atc » 2012年9月06日(木) 19:07

先日ASTERA WARP評価版を入手しました。
フローデザイナーのバージョンは4.6.0.6846です。

HTTP起動によりPOSTされたParameterListストリームを受け
Validationコンポーネントで属性(半角文字、全角文字、半角カナ、日時)チェックを行うことは可能でしょうか?
atc
 
記事: 2
登録日時: 2012年9月06日(木) 18:27

Re: Validationによる属性チェック

投稿記事by itete » 2012年9月10日(月) 18:28

受け取った値が、想定している値や形式かどうかをチェックする、ということでよいでしょうか。
まず、ParameterListではStringとして受け取ります。
Validator Builderで「データ型」に regex を指定し、「値」に正規表現のパターンを記述して、
対象文字列の文字種やフォーマットを指定すれば、当てはまるかどうかがチェックできます。
下記は一例です。「。-゚」の部分は、半角区点・半角ハイフン・半角半濁点をつなげたものです。
・文字列が半角カナのみかどうかを調べる
^[。-゚]+$
・文字列が半角文字のみかどうかを調べる
^[\x20-\x7E。-゚]+$
・文字列が全角文字のみかどうかを調べる
^[^\x01-\x7E。-゚]+$
・文字列がyyyy/MM/dd HH:mm:ssの形式かどうかを調べる
^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}$

すべてShift_JISコード番号で文字の範囲を指定できると思っていたのですが、半角カナのコードが
うまく判断されませんでしたので、半角カナの範囲は対象の文字を直接記述しています。
ちなみに、RegexpMatch関数にサンプルとして登録されている、全角文字をチェックするパターンには
[^\x01-\x7E\xA1-\xDF] と書かれています。\xA1-\xDF を指定することで半角カナを除外しようという
意図のようなのですが、これも半角カナにマッチしないため除外できず、半角カナも全角として
判断される結果となっています(OROの仕様なのでしょうか・・・)。
これも [^\x01-\x7E。-゚] のように対象の文字を記述する方法だと意図する動作となりました。

Validationコンポーネント以外の方法としては、Mapperコンポーネント内でRegexpMatch関数にて判断し、
BranchStartコンポーネントで分岐する方法もあります。
また、正規表現を使わずに、全角のみか・半角のみかをチェックする方法としては、Mapperの中で
2つのLen関数で文字数とバイト数(Shift_JISを指定してカウント)を取得し、その2つの値を
比較して判断する方法(バイト数が文字数の2倍なら全角のみ、バイト数と文字数が同じなら半角のみ)
が考えられると思います。
itete
 
記事: 156
登録日時: 2007年1月09日(火) 12:15

Re: Validationによる属性チェック

投稿記事by atc » 2012年9月13日(木) 10:58

頂いた回答を元にValidator Builderで
正規表現のパターンを記述→受け取った値のチェック
を行うことができました。

ありがとうございました!
atc
 
記事: 2
登録日時: 2012年9月06日(木) 18:27


Return to ビギナールーム

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]

cron