プログラミングスクールの問題についてご質問があります。問題は以下の通りです。
以下の例を表す正規表現を作成してください。
電話番号 (例: 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勉強中なので、簡単な表現で教えて貰えたら助かります...<(_ _)>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/09 11:35
退会済みユーザー
2017/07/09 12:16
2017/07/09 13:02