こんにちは!青木です!

GeneXus(ジェネクサス)は、『何でも自動生成できる魔法のツールではない。しかし、自動化により、生産性を上げることは間違いない』、これは過去のブログでも述べた通りです。

所謂『要件定義』の部分は、人間がせざるを得ないということです。

しかしながら、その要件定義をシステムに反映させる面で、なるべく複雑なロジックのコーディングをしないで済む工夫は随所に見られます。

今回取り上げる正規表現も、GeneXus特有のものではないですが、その一つであると言えます。

定義『正規表現(regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つである。』(出典:

http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE

定義だと堅苦しいですね。GeneXusを使って、正規表現を利用したアプリケーションを作成していきましょう。

BLOG_Tra

 

 

 

上は、とあるトランザクション(Transaction)オブジェクトです。郵便番号を入力する際の書式を正規表現を用いて定めたいと思います。その時、大きく分けて以下2通りの方法があります。

①(ルールで設定)入力が正規表現に一致するか、IsMatchメソッドで調べる

②(プロパティで設定)項目属性の『Regular Expression』プロパティで設定する

今日の郵便番号は②の方法で設定してみます。

KOTTI

 

 

 

 

 

 

 

 

項目属性:MemberZip(郵便番号)のプロパティは上のように修正します。『Regular Expression』プロパティに正規表現を、『Validation Failed Message』プロパティにエラーメッセージを、それぞれ入力しています。☆ちなみに、ドメインのプロパティにも定義できますので、何度も同じ制御を書くことは省略できます(手順は同様です)☆正規表現の意味は、後ほどに回して、結果を見てみましょう。

BLOG_OKO

 

 

 

 

例えば、郵便番号の欄にハイフンを入れないで入力したりすると、エラーメッセージが出力され、入力が有効になりません。(画像が汚くて、すみません)成功時の画面は以下です。

BLOG_JIKKOU

 

 

 

 

 

正規表現の適用の流れは以上ですが、肝心の正規表現の記述の部分について少々解説してみます。

『^\d{3}\-\d{4}$』(\は、エンマークです)となっていましたね。まず、先頭と末尾の『^$』ですが、『^』は、先頭の一致を表し、『$』は末尾の一致を表します。すなわち、『\d{3}\-\d{4}』部分だけしか存在しない行という意味です。この時点でほとんどの形がエラーになることは分かりますね。

次に『\d』ですが、これは0~9の数字を意味します。また、{n}は、n回の繰り返しを意味しますので、『\d{3}』は、0~9の数字が三回連続で使われているものを指します。

『\-』は単に『-』を表しますから、全体では、『0~9の数字を3回繰り返した後に、-があって、その後に0~9の数字を4回繰り返した書式、それだけが存在する行』ということになります。つまり、『XXX-XXXX』の形というわけです。

さて、本日はこの辺でおしまいにしたいと思います。自信満々に”続きもの宣言”したもののネタがもつのやら…(笑)次回はもっと正規表現×GeneXusの部分をお見せできればと思います。

ご覧頂きまして、ありがとうございました!