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

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

新規登録して質問してみよう
ただいま回答率
85.46%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

592閲覧

エラーハンドリング 正規表現

hayatonbi94

総合スコア6

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/07/05 17:04

前提・実現したいこと
エラーハンドリングの正規表現を用いてユーザーにメールアドレスを間違って送信させないようにしたいです。

質問内容
現在就活用にポートフォリオを作っています。その際にユーザーにメールフォームを入力してもらい、書いてもらった内容に「@」がなけれが「@がありません。正しく入力してください。」と表示させたいです。

正規表現を使うとエラーハンドリングを解決できることが分かったため、外部定義したjsファイル下記のコードがある状態です。
var address = "test123@test.com";
var reg = /^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}.[A-Za-z0-9]{1,}$/;
if (reg.test(address)) {
console.log("正しい");
} else {
console.log("間違っている");
}

"test123@test.com"をユーザーに入力してもらった内容にすることができれば成功すると考えています。

発生している問題

ユーザーに入力してもらった内容をjsの正規表現につなげるやり方がよくわかりません。

該当のソースコード

htmlにあるコード  <input type ="text" name="mail" placeholder="新規登録するメールアドレス">
jsにあるコード <script src="js/touroku.html"></script>

var address = "test123@test.com";
var reg = /^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}.[A-Za-z0-9]{1,}$/;
if (reg.test(address)) {
console.log("正しい");
} else {
console.log("間違っている");
}

初めての質問となります。わかりにくいところは指摘してくださると助かります。よろしくお願いします。

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

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

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

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

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

hentaiman

2020/07/05 17:06

javascriptの使い方が全く分からないという質問ですか?
hayatonbi94

2020/07/05 17:10

hentaimanさん。いえ違います。わかりにくくてすみません。エラーハンドリングの実装方法が分からないという質問です。
hentaiman

2020/07/05 17:15

ifを通すだけですよね?console.logの部分でreturn true またはreturn falseに置き換えて、問題無い場合のみsubmitすればいいだけだと思うんですが それとも文字通りError(他の言語でのthrow Exceptionやraiseで投げるやつ)が出た場合の制御をしたいという事ですか?
hayatonbi94

2020/07/05 17:29

ifを使いたいのですが、 <input type ="text" name="mail" placeholder="新規登録するメールアドレス"> 上記のメールフォームに入力した内容をifに適用する方法が分かりません。
guest

回答3

0

引用テキスト書いてもらった内容に「@」がなけれが「@がありません。正しく入力してください。」と表示

js必須ですか?
入力書式の問題だけなら

html

1<input type="email" name="mail" placeholder="新規登録するメールアドレス">

で良いのでは? と思いますが^^;

投稿2020/07/06 02:12

編集2020/07/06 02:59
-millmill-

総合スコア674

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

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

hayatonbi94

2020/07/07 06:05

解答ありがとうございます。 私は入力フォームだけならhtml だけで大丈夫だと思うのですが、文字を入力した際に確認文を送るのはjsでできる認識ですのでjsを使おうとしていました。
-millmill-

2020/07/07 07:28

type="email"にすると、@がない場合自動的に、ツールチップが出ます 文言が変えられないのが難点ですが、、^^;
hayatonbi94

2020/07/17 14:01

ありがとうございます。その方法でも解決することが出来ました。
guest

0

ベストアンサー

参考URLの書き方に質問者のif文埋め込むとこんな感じです。

<form id="tera"> <input type="text" id="mail" placeholder="新規登録するメールアドレス"> <input type="submit"> </form>
function logSubmit(event) { var address = document.getElementById('mail'); var reg = /^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}.[A-Za-z0-9]{1,}$/; if (reg.test(address)) { alert("正しいから佐文ッとします"); } else { alert("間違ってるからキャンセルします"); event.preventDefault(); } } const form = document.getElementById('tera'); form.addEventListener('submit', logSubmit);

投稿2020/07/05 17:41

hentaiman

総合スコア6426

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

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

hayatonbi94

2020/07/07 06:08

hentaiさん、解答ありがとうございます。適用できたのですが、私はProgateで学習しただけでググりながら正規表現を使おうとしていました。実際にhentaimanさんのコードの内容が全く理解できません。やはりググりながら一つ一つ学習を進めるしかないのでしょうか?
hentaiman

2020/07/07 06:41

それは厳しいな・・・ ググりながら=分からないコードが出る度に調査する、という意味ならそれでもいいです。回答に書いたコードの不明点をググりながら理解していくというやり方ですね。 しかし順番に1から学ぶつもりでググりながら勉強するのなら時間の無駄です。何かしら入門書籍を買った方が学習スピードは飛躍的に高まると思います。本屋なら立ち読みして読み易いやつ選ぶといいです。 自分も最近も本買いましたし、なんだかんだ本は読み易くまとまってます。
hayatonbi94

2020/07/17 14:00

返信遅れてしまい申し訳ありません。なるほど。わかりました。本などで勉強したいと思います。
guest

0

js

1 2document.getElementById('button').onclick = function(){ 3 var address = document.getElementById('value').value; 4 var reg = /^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}.[A-Za-z0-9]{1,}$/; 5 if (reg.test(address)) { 6 console.log("正しい"); 7 } else { 8 console.log("間違っている"); 9 } 10} 11

投稿2020/07/05 17:14

kyoya0819

総合スコア10429

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

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

kyoya0819

2020/07/05 17:15 編集

よくわかんないけど、ボタン発火だとこんなかんじ。 入力と同時にチェックするなら別の書き方が必要。
hayatonbi94

2020/07/05 17:27

回答ありがとうございます。 上記のコードを試したところ解決できませんでした。 下記がgithubのコードになります。 https://github.com/hayato0904/hayato0904.github.io こちらのtouroku.htmlとtouroku.jsでの操作で行っています。
kyoya0819

2020/07/05 17:36

もちろんこのままだと使えません。 あくまでも、「Hint」になります。 具体的な要件がないとこれ以上はかけません。
hayatonbi94

2020/07/07 06:03

了解しました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問