入力された値が数値かどうか調べる

先ほど、ドミノ懇談室で、Re: 数値を指定するという記事を書いたが(あ。本名だよ。ま、いっか)、ちょっとこれの解説をしようと思う。

@Matches関数は、文字列が特定のパターンと一致するかどうかを調べる関数です。
ここでは、数字(0~9の文字と仮定します)以外はNGとするので、パターンは{0-9}となります。注意するのは、"{0-9}"と"で囲う点です。
また、文字列はtestフィールドなので、そのまま指定します。

とすると、
@Matches(test;"{0-9}")で、testフィールドの文字列が数字かどうかを判断できます。
しかし、サンプルを見ると、これだけで終わっていません。
どういうことか?
"{0-9}"というのは、1文字分なのです。
よって、
@Matches(test;"{0-9}")では、testフィールドに2文字以上入力されていたら全部NGになってしまうのです。
これでは困るので、今回の要件である「4文字以内」という所に着目して、サンプルの様に、"{0-9}"を1つの場合から4つの場合まで書いているのです。
これで、1文字、2文字、3文字もしくは4文字であればOKとなるわけです。



Rem {数字とは、0-9のいずれかを指すものとする。-(マイナス)や,(カンマ)、.(小数点)は含まない。};
str1 := @Matches(test;"{0-9}");
str2 := @Matches(test;"{0-9}{0-9}");
str3 := @Matches(test;"{0-9}{0-9}{0-9}");
str4 := @Matches(test;"{0-9}{0-9}{0-9}{0-9}");

@If(str1=1|str2=1|str3=1|str4=1;@Success;@Failure("4桁以内の数字を入力してください。"))


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

コメント