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

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

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

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

Q&A

解決済

3回答

892閲覧

電話番号の正規表現(複数)

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2021/05/06 06:10

前提・実現したいこと

電話番号の入力欄を3つに分けた問題に取り組んでいるのですが、最初の入力欄の正規表現が上手くいきません。

入力欄の個数云々は、そういった問題に取り組んでいるのでご了承ください。

最初の入力欄では、 0[7-9]0 だった時か 0[1-9] だった時のみOKとしたいです。

下にコードを記載するので間違っている点を教えていただきたいです。

発生している問題・エラーメッセージ

下のコードだと、 020 などもOKになってしまいます。

該当のソースコード

電話番号:<input type="tel" id="tel1" value="" onblur="check5()" >-<input type="tel" id="tel2" value="" onblur="check5()" >-<input type="tel" id="tel3" value="" onblur="check5()" > function check5(){ var tel1 = document.getElementById('tel1').value; var tel2 = document.getElementById('tel2').value; var tel3 = document.getElementById('tel3').value; if(!tel1.match(/^0[7-9]0$/ | /^0[1-9]$/) || !tel2.match(/^[0-9]{4}$/) || !tel3.match(/^[0-9]{4}$/)){ error5.innerHTML = '入力内容が正しくありません'; }else if(tel1.match(/^0[7-9]0$/ | /^0[1-9]$/) && tel2.match(/^[0-9]{4}$/) && tel3.match(/^[0-9]{4}$/)){ error5.innerHTML = 'OK' }else{ error5.innerHTML = ' '; } }

試したこと

!tel1.match(/^0[789]0$/) || !tel1.match(/^0[1-9]$/)

このコードだと、 080 も弾かれてしまい困っています。

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

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

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

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

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

guest

回答3

0

下のコードだと、 020 などもOKになってしまいます。

本題ではありませんが、020始まりの電話番号も存在はします(ただし、一般の電話に割り振られることはありません)。

電気通信番号指定状況(総務省)

投稿2021/05/06 06:48

maisumakun

総合スコア146550

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

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

maisumakun

2021/05/06 06:50

市外局番の区切りも、03-BCDE-FGHJから09496-E-FGHJのように、桁数が変動します。
退会済みユーザー

退会済みユーザー

2021/05/06 07:15

ありがとうございます。 問題の前提ではありませんが、知らなかった知識なのできちんと調べて身に付けます。
sazi

2021/05/06 07:51

> m0809さん どの程度のチェックにするかは別として、この回答のリンク先などで電話番号の体系を理解した上で取り組んでおいた方が良いかと思います。
退会済みユーザー

退会済みユーザー

2021/05/06 08:28

ありがとうございます。 皆様が何を想定してコメントをしてくださっているのかが不明なのですが、こういった問題を解いているのであってこれをどこかで実装するわけではないです。 電話番号云々ではなく、正規表現の練習として色々な方法を探しています。
sazi

2021/05/06 09:14

> m0809さん 正規表現の練習との事でしたか。了解しました。
退会済みユーザー

退会済みユーザー

2021/05/06 09:16

< saziさん ご丁寧にありがとうございます。 たまたま電話番号の問題だっただけなのですが、お陰様で電話番号に関する知識を身に付ける機会を得ることができました。
guest

0

ベストアンサー

自力で解決しました。

ありがとうございました。

/^(?:0[1-9]|0[7-9]0)$/

投稿2021/05/06 07:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yambejp

2021/05/06 08:22

あー、局番わけているのですね。 絶対やめたほうがいいですよ。
退会済みユーザー

退会済みユーザー

2021/05/06 08:28

ありがとうございます。 皆様が何を想定してコメントをしてくださっているのかが不明なのですが、こういった問題を解いているのであってこれをどこかで実装するわけではないです。 電話番号云々ではなく、正規表現の練習として色々な方法を探しています。
yambejp

2021/05/06 09:05

なるほど、では「電話番号」とか余計な蛇足をしないほうがよかったですね 質問者さんの正規表現は 01,02,03,04,05,06,07,08,09,070,080,090をヒットさせる処理です であれば、こんなふうにかくとよいです /^0([1-6]|[7-9]0?)$/
退会済みユーザー

退会済みユーザー

2021/05/06 09:13

ありがとうございます。 上に初心者マークを付け、 「問題に取り組んでいる」「最初の入力欄では、 0[7-9]0 だった時か 0[1-9] だった時のみOKとしたい」 と前提を記載しているので、この質問文で十分かと思い皆様のお手を煩わせてしまいました。 ご丁寧にありがとうございました。
guest

0

電話番号なんてチェックする意味がないのでやめましょう
どうしてもやりたいなら0から始まる10~11桁の半画数値くらいが落としどころでしょう

^0\d{9,10}$

投稿2021/05/06 06:15

編集2021/05/06 06:16
yambejp

総合スコア117682

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

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

退会済みユーザー

退会済みユーザー

2021/05/06 06:23

コメントありがとうございます。 電話番号では使わないとして、私がやりたいこと(1つの入力欄で2パターンの正規表現)はどのように書けばいいのか教えていただけないでしょうか?
yambejp

2021/05/06 06:35

> 0[7-9]0 だった時か 0[1-9] だった時 ^0([7-9]0|[1-9][1-9])\d{7,8}$ みたいな感じですかね・・・
退会済みユーザー

退会済みユーザー

2021/05/06 07:02

ありがとうございます。 想定通りには動かなかったので引き続き取り組んで参ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問