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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

935閲覧

正規表現が良く分からないです。

newyee

総合スコア213

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/07/09 11:23

プログラミングスクールの問題についてご質問があります。問題は以下の通りです。
以下の例を表す正規表現を作成してください。
電話番号 (例: 03-1111-1111, 040-222-2222)
西暦(例: 1953, 2003)
formタグ (例: <form>, <form method=”post”>)
メールアドレス (例: test_2@test.co.jp, test.3@example.ne.jp)
URL(例: https://test.com, http://codecamp.jp/index.html?q=test)
作成した正規表現は、こちらで用意した確認用プログラムの指定箇所に入力した上でファイルを保存し、URLへアクセした際、結果が全て「完全一致」と表示されることを確認してください。
可能ならば、メールアドレスとURLにはどんな記号が利用可能なのか調べ、例として挙げたもの以外もできる限り正確にチェックが行える正規表現を作成してください。

PHP

1<?php 2// 西暦 3$regexp_year = '/[12]\d{3}/'; // 西暦の正規表現を入力 4$check_year[0] = '1953'; 5$check_year[1] = '2013'; 6// 電話番号 7$regexp_phone_number = '/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/'; // 電話番号の正規表現を入力 8$check_phone_number[0] = '03-1111-1111'; 9$check_phone_number[1] = '040-222-2222'; 10$check_phone_number[2] = '0120-000-000'; 11// formタグ 12$regexp_form = '//'; // formの正規表現を入力 13$check_form[0] = '<form>'; 14$check_form[1] = '<form method="post">'; 15// メールアドレス 16$regexp_mail = '//'; // メールアドレスの正規表現を入力 17$check_mail[0] = 'test@test.com'; 18$check_mail[1] = 'test_2@test.co.jp'; 19$check_mail[2] = 'test.3@example.ne.jp'; 20// URL 21$regexp_url = '//'; // URLの正規表現を入力 22$check_url[0] = 'http://codecamp.jp'; 23$check_url[1] = 'https://test.com'; 24$check_url[2] = 'http://codecamp.jp/index.html?q=test'; 25//////////////////////////////////////////////////////// 26// これ以降の処理はソースコード変更を行わないようにしてください。 27//////////////////////////////////////////////////////// 28$reslut_check_phone_number = check_regexp($regexp_phone_number, $check_phone_number); 29$reslut_check_form = check_regexp($regexp_form, $check_form); 30$reslut_check_mail = check_regexp($regexp_mail, $check_mail); 31$reslut_check_year = check_regexp($regexp_year, $check_year); 32$reslut_check_url = check_regexp($regexp_url, $check_url); 33function check_regexp($regexp, $str_data) { 34 $msg = array(); 35 foreach ($str_data as $value) { 36 if (preg_match($regexp, $value, $macthes) === 1) { 37 if ($value === $macthes[0]) { 38 $msg[] = '完全一致: ' . $value; 39 } else { 40 $msg[] = '部分一致: ' . $value . ' 【一致した文字列: ' . $macthes[0] . '】'; 41 } 42 } else { 43 $msg[] = '不一致: ' . $value; 44 } 45 } 46 return $msg; 47} 48?> 49<!DOCTYPE html> 50<html lang="ja"> 51<head> 52 <meta charset="UTF-8"> 53 <title>正規表現課題</title> 54 <style type="text/css"> 55 h1 { 56 font-size: 16px; 57 } 58 h1, p { 59 margin: 0px; 60 } 61 </style> 62</head> 63<body> 64 <section> 65 <h1>西暦の正規表現チェック: <?php print htmlspecialchars($regexp_year, ENT_QUOTES, 'UTF-8'); ?></h1> 66<?php foreach ($reslut_check_year as $value) { ?> 67 <p><?php print htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?></p> 68<?php } ?> 69 </section> 70 <section> 71 <h1>電話番号の正規表現チェック: <?php print htmlspecialchars($regexp_phone_number, ENT_QUOTES, 'UTF-8'); ?></h1> 72<?php foreach ($reslut_check_phone_number as $value) { ?> 73 <p><?php print htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?></p> 74<?php } ?> 75 </section> 76 <section> 77 <h1>fromタグの正規表現チェック: <?php print htmlspecialchars($regexp_form, ENT_QUOTES, 'UTF-8'); ?></h1> 78<?php foreach ($reslut_check_form as $value) { ?> 79 <p><?php print htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?></p> 80<?php } ?> 81 </section> 82 <section> 83 <h1>メールアドレスの正規表現チェック: <?php print htmlspecialchars($regexp_mail, ENT_QUOTES, 'UTF-8'); ?></h1> 84<?php foreach ($reslut_check_mail as $value) { ?> 85 <p><?php print htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?></p> 86<?php } ?> 87 </section> 88 <section> 89 <h1>URLの正規表現チェック: <?php print htmlspecialchars($regexp_url, ENT_QUOTES, 'UTF-8'); ?></h1> 90<?php foreach ($reslut_check_url as $value) { ?> 91 <p><?php print htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?></p> 92<?php } ?> 93 </section> 94</body> 95</html>

問題の西暦と電話番号の正規表現については自分で書いてみたですが、メールアドレスとURLについてはどうすればいいか分からない状態です。。。formタグに至っては、これはもはやユーザーの入力値をチェックするものではないものに思えます。。。
誰か詳しい方いらっしゃいましたら、教えて下さい...
PHP勉強中なので、簡単な表現で教えて貰えたら助かります...<(_ _)>

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

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

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

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

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

guest

回答3

0

ベストアンサー

質問自体の回答は、プログラミングスクールで聞くのが良いと思います。
*いろんなレベルの表現があるので、こんなところで聞くと、多分混乱します。

正規表現の学習は、視覚化するとものすごくわかりやすくなりますよ。
regexper.com
自身で作成した内容を試してみると面白いです。

投稿2017/07/09 11:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

newyee

2017/07/09 11:35

ありがとうございます。 なんですけど、実はもう辞めてしまってスクールに聞けない状態なんですよね… 貼って頂いたURL参考にさせて頂きますね!
退会済みユーザー

退会済みユーザー

2017/07/09 12:16

テスト通すだけなら、簡単なのでやってみるとイイですけど、使用を前提とするなら、かなり勉強しないといけないです。 正規表現って、規則性に合致しているかどうかを確認するものなので、その規則性が複雑な場合、かなりの労力が必要です。 例えば、メールアドレスだと、この辺が有名ですが http://blog.livedoor.jp/dankogai/archives/51189905.html 意味がわからないと思います。 この問題、規則性の前提が出題者に確認できない状態なのであれば、これ以上やっても意味ないんで、さっさと次に行くことをオススメします。
newyee

2017/07/09 13:02

分かりました。。。 少し調べてみて厳しいようでしたら、次に進んでみようと思います。 ご丁寧にありがとうございました。
guest

0

正規表現でって本気なのでしょうか?
これは昔からある有名なサイトですが
http://www.din.or.jp/~ohzaki/perl.htm#URI
http://www.din.or.jp/~ohzaki/mail_regex.htm

電話番号に関しては総務省のサイトで
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a.html

メールアドレスを厳密に型チェックしてもその人のものかということは確認できないのであまり意味がなくて、よくあるユーザー登録に見られるように、実際に送ってみて確認するのが常套手段だと思います。

投稿2017/07/10 04:23

x_x

総合スコア13749

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

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

0

どの問題も、'/.*/'で「完全一致」になりますね。
ジョーク問題では?

投稿2017/07/11 14:04

otn

総合スコア84423

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問