クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  値を正しく入力させる(3)
作成日:2024年07月23日

値を正しく入力させる(3)

イメージイラスト
にゃん太

どうも、にゃん太です

今回のメモは、値を正しく入力させる(2)の続きです

引き続き、文字列の入力制限について書いてきます


今回も引き続き文字列の入力です

メールアドレスを入力
メールアドレスの入力を求める機会は少なくありません
入力後に送信テストできれば正誤は確実に判定できますが、その場合でも入力チェックは行う必要があります
RFC5321RFC5322の仕様に準拠しているかをチェックするのが一番よいでしょうが、正直かなり分かりづらいです
大まかに要約してみると下記の通りです
このルールから逸脱したメールアドレスは、下記の計算式で制限できます

計算式で制限

While ( [ #domain = "abcdefghijklmnopqrstuvwxyz0123456789-."; #atext = "abcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-/=?^_`{|}~."; #special = "()<>[]:;@\,\""; #i = 1; #quote = 0; #@ = 0; #error = 0; #escape = 0 ]; #i ≤ Length ( メールアドレス ) and #error = 0; [ #text = Middle ( メールアドレス; #i; 1 ); #quote = Case ( #text = "\"" and #quote = 1; 0; #text = "\""; 1; #quote ); #@ = #@ + Case ( #quote = 1; 0; #escape = 1; 0; #text = "@"; 1; 0 ); #error = Case ( #@ > 1; 1; #text = "\""; #error; #text = "@" and #quote = 1; 1; #text = "@" and #i = 1; 1; #text = "@" and #i = Length ( メールアドレス ); 1; #text = "." and #i = Length ( メールアドレス ); 1; #quote = 1 and Filter ( #text; #atext & #special ) = ""; 1; #quote = 0 and Filter ( #text; #atext & "@" ) = ""; 1; #error ); #escape = Case ( #escape = 1; 0; #text = "\\"; 1; 0 ); #i = #i + 1 ]; If ( #error; False; True ) )
とはいえ、一般的に使用されているメールアドレスはもっと記号が制限されており、チェックももっと簡単にしてもよいでしょう
それよりもこのチェックでは見つけられない単純な入力ミスの方が多いので、ユーザー登録型のシステムであれば、やはり送信チェックに勝る方法はありません

パスワードの入力
新規登録時や長期間利用時のパスワード更新などでパスワードの入力を求める機会があります
昨今のリスクを考慮すれば、最低でも8文字以上、英数記号を全て1文字以上含む程度の強度は欲しいところです

計算式で制限

Case ( Length ( パスワード ) < 8; False; Filter ( パスワード; "abcdefghijklmnopqrstuvwxyz" ) = ""; False; Filter ( パスワード; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ) = ""; False; Filter ( パスワード; "0123456789" ) = ""; False; Filter ( パスワード; "" ) = "_!#$%&=/*+-"; False; True )

MBSプラグインの正規表現を使用すれば下記の様な記載で対応できます

計算式で制限

MBS( "RegEx.Match"; "^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[_!#$%&=/*+-])(?=.*?\d)[a-zA-Z\d_!#$%&=/*+-]{8,100}$"; パスワード; 0 )



以上で「値を正しく入力させる」は終了です
ちなみに、イメージイラストの解答は下記の通りです
解答
メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム