質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

1082閲覧

Javascript email検証についての質問

jirosian

総合スコア7

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/02/05 05:02

編集2020/02/05 05:26

Javascriptでemailアドレスが有効かどうかを検証するプログラムをif文を使って書いているのですが、

1.
@と.(ドット)の間に一文字ないとエラーになるというコード

2.
.(ドット)の後に一文字ないとエラーになるというコードが書けずにいます。

else if(email.indexOf("@",n)&&email.indexOf("@",n+1)=== -1){ return false}

というコードを1の命令をするために書きましたが、動きませんでした。

どなたか分かる方ご回答いただきたいです。
与えられた課題の条件として、indexOf()とlastIndexOf()を使って、検証する必要があるとのことでした。
2のコードは、email.indexOf(.(ドット), 検索を開始するインデックス番号)で書けそうだとは思ったのですが。ユーザーによってメールアドレスの長さが異なるのでどのインデックス番号を入れればいいのかわかりませんでした。

このプログラムのこれまで書いた全体のコードが以下のものです。

function emailConfirmation() { let email = prompt("What is your email address?") if(email.indexOf("@") === -1){ document.getElementById("emailOutput").innerHTML = "This is invalid email address"; }else if(email.indexOf("." ===-1&&email.indexOf("@" ===-1)){ document.getElementById("emailOutput").innerHTML = "This is invalid email address"; }else if(email.indexOf("@",0)=== -1){ document.getElementById("emailOutput").innerHTML = "This is invalid email address"; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/05 05:07

コードは ``` と ``` で囲ってください。インデントされて見やすくなるので。インデントされてないコードは質問者さん自身でも読む気がしないのでは?
jirosian

2020/02/05 05:14

失礼しました。修正しました。
Y.H.

2020/02/05 05:17

> }else if(email.indexOf("." ===-1&&email.indexOf("@" ===-1)){ 括弧()が無茶苦茶ですが質問記載時のミスですか?
jirosian

2020/02/05 05:22

そうですか、これで正解だと思っていました。正しい書き方を教えていただいてもよろしいですか?
yoorwm

2020/02/05 05:40

(や{は必ず対応する)や}がありますね。
m.ts10806

2020/02/05 05:46

Google検索で出てくるような正規表現のサンプルは使えない縛りとかあるのでしたらteratailで質問するのも同義と思いますが
Y.H.

2020/02/05 06:15

email.indexOf() この引数に "." ===-1&&email.indexOf("@" ===-1) が入ってます。
guest

回答2

0

Javascript email検証についての質問

「字句解析」のご質問かもしれませんが、ネイティブに実装された DOM を利用する方法もあります。
(※「字句解析」なら正規表現を使うのが早いと思います)。

ご質問に示された 条件

  1. 言語は Javascript
  2. emailアドレスが有効かどうかを検証するプログラム
  3. if 文を使う

javascript

1const testEmail = ( ad ) => { 2 let elm = Object.assign(document.createElement("input"),{ 3 type: "email" 4 }); 5 elm.value = ad; 6 // return elm.reportValidity()? elm.value: ""; 7 if( elm.reportValidity() ) { 8 return elm.value; 9 } 10 else { 11 // document.getElementById("emailOutput") 12 // .innerHTML = "This is invalid email address"; 13 return ""; 14 } 15} 16console.log( testEmail("mail-user@example.com") );

無理矢理ですが、if を使いました。

ご参考になれば。

投稿2020/02/05 06:22

AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1.@と.(ドット)の間に一文字ないとエラーになるというコード

2..(ドット)の後に一文字ないとエラーになるというコードが書けずにいます。

JavaScript

1if (email.indexOf(".@") !== -1 || email.indexOf("@.") !== -1) { 2 //@と.(ドット)の間に一文字ない 3 // 「".@"がある」または「"@."がある」場合はエラー 4 console.log("Error."); 5} else if (email.indexOf("..") !== -1 || email.slice(-1) === ".") { 6 // .(ドット)の後に一文字ない 7 // 「".."がある」か「"."で終わっている」のどちらかがあればエラー 8 console.log("Error."); 9}

本題ではないけどコメントより

}else if(email.indexOf("." ===-1&&email.indexOf("@" ===-1)){

そうですか、これで正解だと思っていました。正しい書き方を教えていただいてもよろしいですか?

本当に?
email.indexOf() この引数に
"." ===-1&&email.indexOf("@" ===-1)
が入ってます。よってこのelse if()ブロックが真になることはありません。

正しい書き方を教えていただいてもよろしいですか?

書き方ではなく考え方を。

とりあえずこのelse ifの条件をエスパーして「"."も"@"も存在しない場合」とした場合、
以下の考え方で記載してください。

  • email に "."が存在しない条件はどう記載しますか?
  • email に "@"が存在しない条件はどう記載しますか?
  • それを && の右辺と左辺に記載するだけです。

投稿2020/02/05 05:52

編集2020/02/05 07:12
Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jirosian

2020/02/05 07:05

回答ありがとうございます。 1、2の案をそれぞれしてみました。 一番最初のは通りましたが、二番目のコードをかくと、 有効なメールアドレスも無効になってしまいます。。。
Y.H.

2020/02/05 07:13

すみません、コード間違ってました。 誤: } else if (email.indexOf("..") || email..slice(-1) === ".") { 正: } else if (email.indexOf("..") !== -1 || email.slice(-1) === ".") {
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問