初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-07-08 18:53:07

S&G
Member

メールアドレス倫理チェック

メールアドレスを入力する時にメールアドレスとして正しい入力なのか
みなさんはどのようにチェックしていますか?

例えば
aaa ×
aaa@nn ×
aaann.net ×
aaa@nn.net ○

Offline

#2 2016-07-08 23:07:06

Shin
Member

Re: メールアドレス倫理チェック

@と.のチェックだけなら、Position ( GetValue ( Substitute ( アドレステキスト ; "@" ; ¶ ) ; 2 ) ; "." ; 1 ; 1 ) が 2 以上であれば、という判断でいいかも知れませんが。実際には、最後の . 以降が、決められた地域名かドメイン名に一致することを確認する等が必要でしょうね。
現実には、実際に送ってみてエラーが返らない事、という判断になるのでは。

Offline

#3 2016-07-09 09:40:42

チポ
Member

Re: メールアドレス倫理チェック

アドレスのルールをちょっと調べてみました。


@の前のローカル部ですが

「" "」ダブルコーテーション
で囲まれた中では、「@」も使えます。

「.」ドット
も一番前と後、連続でなければ使えます。


正しい
の判断が難しくなりますね。

Offline

#4 2016-07-09 15:46:59

Shin
Member

Re: メールアドレス倫理チェック

そんなルールがあったんだ。
@を改行に置き換えると、最後の行がドメインになるはずなので、その部分だけは何とかなるかな。

Offline

#5 2016-07-09 16:42:24

Hiro
Member

Re: メールアドレス倫理チェック

環境説明がありませんが、Windows限定の解法です。(過去ログからS&Gさんは確かWin派?)
JavaScriptの正規表現を利用して、より厳密なメールアドレスの書式チェックを行います。

以下のHTAコード(テキスト計算式)を「Eventを送信」します。(判定結果は、書式不正の時に警告ダイヤログが表示されます。)

"mshta \"javascript:
var email='" & メールアドレスフィールド & "';
if(!email.match(/^[\w_\-]+@[\w_\.\-]+\.\w{2,}$/))
{alert('e-mailアドレスを確認ください。')};
close();\""

なお、上式の正規表現の判定ロジックは、
@前は「英数字_-」使用可、@後ひとつ以上の「英数字_-.」があるか、最後の「.」の後に2文字以上英数字で終わっているか否か

Offline

#6 2016-07-09 17:18:33

S&G
Member

Re: メールアドレス倫理チェック

Windowsで開発して、実行はiPadです。

Offline

#7 2016-07-09 17:47:57

Hiro
Member

Re: メールアドレス倫理チェック

それなら、Webビューアを利用してマルチプラットフォーム対応すれば良いかな。

「Webビューアを設定」で下記data:スキーム(テキスト計算式)を「URLへ移動」へ設定。

"data:text/html,<script>
var email='" & メールアドレスフィールド & "';
if(!email.match(/^[\w_.-]+@[\w_.-]+\.\w{2,4}$/)) {alert('e-mailアドレスを確認ください。')};
</script>"



【補足追記】at 23:06
もう少し広範な規格外メールアドレスにも対応した正規表現の例、
(規定ルール外のdocomoなど私設メールアドレスすべてに対応させるのは不可能でしょう)

"data:text/html,<script>
var email=='" & メールアドレスフィールド & "';
if(!email.match(/^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$/))
{alert('e-mailアドレスを確認ください。')};
</script>"

Last edited by Hiro (2016-07-09 23:08:18)

Offline

#8 2016-07-09 20:39:12

ひぐらし
Guest

Re: メールアドレス倫理チェック

>「.」ドット
>も一番前と後、連続でなければ使えます。

docomoでは使えるから(キャリアが規則を無視してた)
.で始まるアドレスの人も居てめんどくさかった記憶があります。
今回は関係ないでしょうけど。

#9 2016-07-09 23:08:57

nice-guy
Member

Re: メールアドレス倫理チェック

カスタム関数を使うのはどうでしょう?
Advanced版を持っていないと作れないと思いますが。

http://www.fmpro.jp/fmi/xsl/plugin/cf.x … d&-skip=39

Offline

#10 2016-07-10 09:34:34

はた
Guest

Re: メールアドレス倫理チェック

nice-guy wrote:

カスタム関数を使うのはどうでしょう?
Advanced版を持っていないと作れないと思いますが。

http://www.fmpro.jp/fmi/xsl/plugin/cf.x … d&-skip=39

チェックだったら、こっちの方がよさそう。
http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0049

#11 2016-07-10 13:29:23

Hiro
Member

Re: メールアドレス倫理チェック

はた wrote:

チェックだったら、こっちの方がよさそう。
http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0049

おぉ、わたしもこちらへ一票。 社本さんは素晴らしい。
社本さんのは、無理無理1つの統括ルールで甘い判定をするのでなく、
書式ルールをドメインごと個別ルールに分け厳密に個別精査しています。

なお、このカスタム関数はFM標準の関数だけで記述されているので、
非Advanced版の人でも一般計算式として利用できます。
具体的には、
・グローバル・テキストフィールドにこの関数式をコピー
・Substituteでコピー式内の「引数(メールアドレス、オプション)」を実際の「対象メルアド値、1(または0)」
   に置き換えてから、Evaluateでこの置換え式を実行します。
      Evaluate( Substitute(式フィールド
         ; ["Lower ( メールアドレス )"; "Lower ( \""&対象メルアドフィールド&"\" )"]
         ; ["~option = オプション"; "~option = 1"])
       )
     //オプション値は好みを指定

Last edited by Hiro (2016-07-10 14:16:58)

Offline

#12 2016-07-10 15:50:20

Shin
Member

Re: メールアドレス倫理チェック

よくできたカスタム関数ですね。
そのままコピーしてきて、計算フィールドに計算式として入れて、最初の変数設定の、メールアドレス、と、オプション を実際のフィールドにしておく、という方法が簡単では。

Offline

#13 2016-07-11 16:13:23

S&G
Member

Re: メールアドレス倫理チェック

みなさん。ありがとうございました。
Advanced版を持っているので、試してみます。
みなさん、凄い!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.012 seconds, 7 queries executed - Memory usage: 525.66 KiB (Peak: 546.56 KiB) ]