• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:電話番号のチェック ハイフン無しの場合について)

ハイフン無しの電話番号のチェックについて

このQ&Aのポイント
  • Webサイトの問い合わせフォームで、ハイフン無しの電話番号の入力に対応したエラーチェックを行いたいです。
  • 現在の問い合わせフォームでは、ハイフン有りの電話番号のみを正確にチェックしているため、ハイフン無しの場合にエラーとなってしまいます。
  • ハイフン無しでも正確に電話番号をチェックするために、どのようなコードを実装すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

俺のやり方は正しいとは言えないけど、チェックする前に別の変数に入れて、ハイフンをstr_replaceでざっくりやってから、[0-9]{11,12}としてる。 あと htmlspecialchars は表示する段階で使ってる。

noname#233083
質問者

お礼

ありがとうございます! phpの理解は無いのですが、ご教示頂いた方法について理解してみたいと思います!! それで、できればやってみます!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

もう少しざっくりやるならこんな感じで $pattern='/^0[1-9]+[0-9\-]+$/'; 0から始まり、1から9の数字が続き、0~9の数字かハイフンだけで構成された文字列 <?PHP $a=array("0-12345-6789","01-2345-6789","0123-45-6789","01234-5-6789","0123456789","123-456-7890"); $pattern='/^0[1-9]+[0-9\-]+$/'; foreach($a as $val){ if(preg_match($pattern,$val)){ print "ok:"; }else{ print "ng:"; } print $val."<br>\n"; } ?>

noname#233083
質問者

お礼

ありがとうございます! 参考にさせて頂きます!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 電話番号かどうかを判断したい(Perl)

    フォームに入力された文字が電話番号かどうかを判断したいと考えています。 ハイフンは使いません。 if ($$in{tel} =‾ /¥-/) { &error("電話番号はハイフン( - )なしの10桁または11桁でご記入ください"); } if ($$in{tel} =‾ /^\d{10,}+$/) { &error("電話番号はハイフン( - )なしの市外局番からご記入ください"); } このようにしてみたのですが、うまく動きません。 どうすればいいんでしょうか... よければ教えてください。

    • ベストアンサー
    • Perl
  • 電話番号 正規表現

    このスレッドは、http://oshiete1.goo.ne.jp/qa3565776.htmlから移動してきました。私が追記する欄がなくなってしまったことと、内容をまとめたかったからです。マルチスレッドにならないように以前のスレッドは締め切ります。 電話番号の判定に関する正規表現 $tel1は市外局番、 $tel2は市内局番、 $tel3はお客様番号 ついでに$tel4は内線番号としたい。 それでどのような判定を正規表現でしたいかというと 1)まず、この電話番号入力欄は入力しても空欄でもよい。 2)ただし、$tel1、 $tel2又は$tel3の一つにでも入力した場合は、他の二つにも(たとえば、$tel1に入力した場合には$tel2及び$tel3にも)必ず入力しなければならない。 3)$tel4は空欄でも入力しても良いが、$tel4を入力する場合は必ずtel1、 $tel2及び$tel3が入力されている必要がある。 4)tel1、 $tel2、$tel3及び$tel4に入力がある場合は、数字のみ可能。 これってどのようなコードになるのでしょうか? ちなみに私が考えているコードを書いときますが、数字以外でも入力できてしまいます。入力がある場合は、数字しか入力できないようにしているはずなのに... <?php if($tel1 != "" or $tel2 != "" or $tel3 != "") { if($tel1 == "" or $tel2 == "" or $tel3 == "") { if(!ereg("^[0-9]+$", $tel1) or !ereg("^[0-9]+$", $tel2) or !ereg("^[0-9]+$", $tel3) or !ereg("^([0-9]+|\t)$", $tel4)) { echo '電話番号不正確'; } } }else{ echo '電話番号正確'; } ?> 以下は、目指す表示結果です。 この場合、「電話番号不正確」としたい。 $tel1 = 123 $tel2 = 空欄 $tel3 = 789 $tel4 = 空欄 この場合、「電話番号不正確」としたい。 $tel1 = a $tel2 = 456 $tel3 = 789 $tel4 = 空欄 この場合、「電話番号不正確」としたい。 $tel1 = 空欄 $tel2 = 空欄 $tel3 = 空欄 $tel4 = 101 この場合、「電話番号不正確」としたい。 $tel1 = 123 $tel2 = 456 $tel3 = 789 $tel4 = a この場合、「電話番号正確」としたい。 $tel1 = 123 $tel2 = 456 $tel3 = 789 $tel4 = 空欄 この場合、「電話番号正確」としたい。 $tel1 = 123 $tel2 = 456 $tel3 = 789 $tel4 = 101 この場合、「電話番号正確」としたい。 $tel1 = 空欄 $tel2 = 空欄 $tel3 = 空欄 $tel4 = 空欄 以下のコードをwpさんに教えてもらったが、現在、以下の問題点が存在する。 <?php if(!is_numeric($tel4))  echo "電話番号不正確"; ?> <?php $ret1 = true; $ret2 = true; $ret3 = true; if( ! is_numeric($tel1))  $ret1 = false; if( ! is_numeric($tel2))  $ret2 = false; if( ! is_numeric($tel3))  $ret3 = false; if($ret1 and $ret2 and $ret3)  echo "電話番号正確"; else  echo "電話番号不正確"; ?> 問題1)上記のコードではtel4をtel1,tel2,$tel3から切り離して取り扱っているため下記がただしく判定できない。 この場合、「電話番号不正確」としたい。 $tel1 = 空欄 $tel2 = 空欄 $tel3 = 空欄 $tel4 = 101 問題2) 下記の条件を一まとめにして >1)まず、この電話番号入力欄は入力しても空欄でもよい。 >2)ただし、$tel1、 $tel2又は$tel3の一つにでも入力した場合は、他の二つにも(たとえば、$tel1に入力した場合には$tel2及び$tel3にも)必ず入力しなければならない。 >3)$tel4は空欄でも入力しても良いが、$tel4を入力する場合は必ずtel1、 $tel2及び$tel3が入力されている必要がある。 >4)tel1、 $tel2、$tel3及び$tel4に入力がある場合は、数字のみ可能。 一度だけ、「echo "電話番号正確";」又は「echo "電話番号不正確";」を出力したいわけですが、それができない。($tel1,$tel2,$tel3で、「echo "電話番号正確";」又は「echo "電話番号不正確";」の判定結果を出力、そして、別途、$tel4で、「echo "電話番号正確";」又は「echo "電話番号不正確";」の判定結果を出力とはしたくないわけです。) 問題3) >1)まず、この電話番号入力欄は入力しても空欄でもよい。 としたいのだが、私の記憶ではis_numericを使用した場合は空欄を受け付けなかったと思う。つまり下記が正しく判定できない。 この場合、「電話番号正確」としたい。 $tel1 = 空欄 $tel2 = 空欄 $tel3 = 空欄 $tel4 = 空欄 また、is_numericは[0-9]以外にも「+」なども受け付けてしまったような気がする。 どなたかお分かりの方がおられましたら、コードを修正するかコードを教えて下さい。

    • 締切済み
    • PHP
  • 電話番号入力確認 やっぱり分かりません。

    以前電話番号の入力に関する質問をしていて、いろいろご回答頂き自分で取り組んだのですが、やはり分かりません。一様、下記のコードを制作したのですが、まだ、ちゃんと動かない状態です。なぜちゃんと動かないかお分かりの方、おられましたら教えて下さい。 電話番号の判定に関する正規表現 $tel1は市外局番、 $tel2は市内局番、 $tel3はお客様番号 ついでに$tel4は内線番号としたい。 それでどのような判定を正規表現でしたいかというと 1)まず、この電話番号入力欄は入力しても空欄でもよい。 2)ただし、$tel1、 $tel2又は$tel3の一つにでも入力した場合は、他の二つにも(たとえば、$tel1に入力した場合には$tel2及び$tel3にも)必ず入力しなければならない。 3)$tel4は空欄でも入力しても良いが、$tel4を入力する場合は必ずtel1、 $tel2及び$tel3が入力されている必要がある。 4)tel1、 $tel2、$tel3及び$tel4に入力がある場合は、数字のみ可能。 これらの判定は、ばらばらに行なうのではなくまとめて行ないます。そのため結果は「電話番号正確」又は「電話番号不正確」のどちらかが1回のみ出力されるようにします。 以下は、目指す表示結果です。 この場合、「電話番号不正確」としたい。 $tel1 = 123 $tel2 = 空欄 $tel3 = 789 $tel4 = 空欄 この場合、「電話番号不正確」としたい。 $tel1 = a $tel2 = 456 $tel3 = 789 $tel4 = 空欄 この場合、「電話番号不正確」としたい。 $tel1 = 空欄 $tel2 = 空欄 $tel3 = 空欄 $tel4 = 101 この場合、「電話番号不正確」としたい。 $tel1 = 123 $tel2 = 456 $tel3 = 789 $tel4 = a この場合、「電話番号正確」としたい。 $tel1 = 123 $tel2 = 456 $tel3 = 789 $tel4 = 空欄 この場合、「電話番号正確」としたい。 $tel1 = 123 $tel2 = 456 $tel3 = 789 $tel4 = 101 この場合、「電話番号正確」としたい。 $tel1 = 空欄 $tel2 = 空欄 $tel3 = 空欄 $tel4 = 空欄 以下の私のコードはちゃんと動作しません。なぜか分かりません。 <?php $tel_flg1 = 0; $tel_flg2 = 0; $mix = $tel1 . $tel2 . $tel3; if ($tel1 != "" or $tel2 != "" or $tel3 !="" or $tel4 !=""){ if (!ereg("^[0-9]+$", $mix)) { $tel_flg1 = 1; } } if ($tel4 != ""){ if (!ereg("^[0-9]+$", $tel4)) { $tel_flg2 = 1; } } if ($tel_flg1 == 1 or $tel_flg2 == 1) { echo '電話番号不正確'; }else{ echo '電話番号正確'; } ?> コードを修正していただくか、正しいコードを教えていただければ幸いです。 コードが修正可能なら、修正していただいた方がどこを間違えていたのか理解しやすいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 5桁の電話番号

    5桁の電話番号ってありますか? TEL ○-○○○○ よくあるインターネットでの入力フォームをつくっております。 電話番号を入力する際に普通は、市外局番や携帯電話で 10桁か11桁で2箇所にハイフンを入れたとしても 普通、10桁から13桁になると思います。 仮に市外局番を抜かしても最低6桁以上になると思います。 そこで6桁未満14桁以上の電話番号をエラーにしたいですが ハイフンを抜かして5桁の電話番号ってありますか?。 また、ハイフンやカッコを使っても 14桁以上まで入力する人って普通いますか?。

  • ハイフン無しの電話番号データにハイフンを付加したい

    MySQL 4.1.11 を使用しています。 ハイフン無しの電話番号データにハイフンをつけたいです。 現在1000以上のデータを手入力で修正中ですが、自動化できるのでしょうか? できればGWに突入できます(笑)。 どなたか知恵をお貸し下さい。

    • ベストアンサー
    • MySQL
  • エクセルで電話番号にハイフンを入れるには?

    はじめまして、表題の通りですが、なかなか難しくてうまく解決できませんので、ここで質問させていただきます。 電話番号に半角のハイフン(-)を入れて見やすくしたいと考えています。 電話番号には090などで始まる携帯の番号、大阪のように06で始まる番号、京都のように075で始まる番号、西宮市のように0798で始まる番号といろいろ入力されています。それぞれの市外局番の後にハイフンを入れて、残りの番号が8桁なら4桁+ハイフン+4桁、7桁なら3桁+4桁、6桁なら2桁+ハイフン+4桁のようにハイフンを入れていくにはどうしたらよいでしょうか? (例) 09012345678→090-1234-5678 0612345678→06-1234-5678 0751234567→075-123-4567 0798123456→0798-12-3456

  • 電話番号のフォーマットについて

    Javaでアプリケーションを作成中です。電話番号のフォーマットチェックを実装しようとしていますが、そもそも一般的に (1) データベース側では番号だけを保持するのが普通なのでしょうか?(0311112222)それとも (2) ハイフン付で保持するのが普通でしょうか?(03-1111-2222) (1)の場合、画面表示時にハイフンを挿入することになると思いますが、携帯の場合、そうでない場合など処理が複雑になりそうです。(もしくは画面表示時にもハイフン抜きで表示する?) 現状は、あまり厳格にチェックする必要もないと思うので、(2)のやり方でやり、数字かハイフンかのチェックと最大の桁数チェック(11桁なのだろうか)だけしようかと考え始めましたが、何か不都合などあり得ますでしょうか?もし標準的な考え方があればと思い投稿致しました。ご意見あればお願い致します。 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • 携帯電話のハイフン付き番号表示

    携帯電話のアドレス帳を検索すると登録した電話番号がハイフン無しで表示されますが、ハイフンをつけて登録・表示する方法はあるのでしょうか?

  • 電話番号の入力チェック

    ハイフン付きの電話番号のチェックをしようとしています。いろいろ調べていますがうまくいきません。5桁までの半角数字-5桁までの半角数字-5桁までの半角数字という書式のチェックを考えています。 if (ereg("^[0-9]{1,5}-?[0-9]{1,5}-?[0-9]{1,5}$", $str )) { return true; } else { return false; } で中途半端になってチェックされます。 間違っているのか?他に書き方があるのか?教えてください。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • エクセルDBでの番号ハイフンの取り扱い

    エクセルで簡単な業務システムを構築しています。 伝票番号など9999-9999-9999とハイフンを含んで数字で表現される番号をNW-7コードを用いて、a999999999999aのように表現するにはどうしたらいいでしょうか。ハイフンの挿入位置は変動します。 DBにハイフンを含まず入力した際のスタート、ストップの挿入は表現できましたが、ハイフンの消し方がわかりません。DBにはハイフンを含んだ先の形式で入力されているものとします。 ようは、A1に9999-9999-9999と入力された物をB2にa999999999999a出力したいのです。