みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
メールアドレスを入力する時にメールアドレスとして正しい入力なのか
みなさんはどのようにチェックしていますか?
例えば
aaa ×
aaa@nn ×
aaann.net ×
aaa@nn.net ○
Offline
@と.のチェックだけなら、Position ( GetValue ( Substitute ( アドレステキスト ; "@" ; ¶ ) ; 2 ) ; "." ; 1 ; 1 ) が 2 以上であれば、という判断でいいかも知れませんが。実際には、最後の . 以降が、決められた地域名かドメイン名に一致することを確認する等が必要でしょうね。
現実には、実際に送ってみてエラーが返らない事、という判断になるのでは。
Offline
アドレスのルールをちょっと調べてみました。
@の前のローカル部ですが
「" "」ダブルコーテーション
で囲まれた中では、「@」も使えます。
「.」ドット
も一番前と後、連続でなければ使えます。
正しい
の判断が難しくなりますね。
Offline
そんなルールがあったんだ。
@を改行に置き換えると、最後の行がドメインになるはずなので、その部分だけは何とかなるかな。
Offline
環境説明がありませんが、Windows限定の解法です。(過去ログからS&Gさんは確かWin派?)
JavaScriptの正規表現を利用して、より厳密なメールアドレスの書式チェックを行います。
以下のHTAコード(テキスト計算式)を「Eventを送信」します。(判定結果は、書式不正の時に警告ダイヤログが表示されます。)
"mshta \"javascript:
var email='" & メールアドレスフィールド & "';
if(!email.match(/^[\w_\-]+@[\w_\.\-]+\.\w{2,}$/))
{alert('e-mailアドレスを確認ください。')};
close();\""
なお、上式の正規表現の判定ロジックは、
@前は「英数字_-」使用可、@後ひとつ以上の「英数字_-.」があるか、最後の「.」の後に2文字以上英数字で終わっているか否か
Offline
Windowsで開発して、実行はiPadです。
Offline
それなら、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
>「.」ドット
>も一番前と後、連続でなければ使えます。
docomoでは使えるから(キャリアが規則を無視してた)
.で始まるアドレスの人も居てめんどくさかった記憶があります。
今回は関係ないでしょうけど。
カスタム関数を使うのはどうでしょう?
Advanced版を持っていないと作れないと思いますが。
Offline
カスタム関数を使うのはどうでしょう?
Advanced版を持っていないと作れないと思いますが。
チェックだったら、こっちの方がよさそう。
http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0049
チェックだったら、こっちの方がよさそう。
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
よくできたカスタム関数ですね。
そのままコピーしてきて、計算フィールドに計算式として入れて、最初の変数設定の、メールアドレス、と、オプション を実際のフィールドにしておく、という方法が簡単では。
Offline
みなさん。ありがとうございました。
Advanced版を持っているので、試してみます。
みなさん、凄い!
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 525.4 KiB (Peak: 546.3 KiB) ]