1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
/* ------------------------------------------------
 *    preg_matchの正規表現によるチェック
 *   URLとemail、郵便番号、電話番号形式チェック
 *
 *  作成: 2015.07.23 yoshi of CXMedia Inc.
 * ------------------------------------------------ */
header("Content-type:text/plain; charset=UTF-8");

/* ------------------------------------
 *  URLの正規表現
 * ------------------------------------ */
$text "http://www.yahoo.co.jp/";
if (
preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/'$text)) {
    echo 
"■正しいURLです\n";
} else {
    echo 
"■正しくないURLです\n";
}
//--
$url "http://komunitasweb.com/";
if (
preg_match('/^(https?|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i'$url)) {
    echo 
"■URL OK!\n";
} else {
    echo 
"■URL NG\n";
}

/* ------------------------------------
 *  メールアドレスの正規表現
 * ------------------------------------ */
$email "y-test@example.com";
if (
preg_match('/^[^0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9_-]+)*[@][a-zA-Z0-9_-]+([.][a-zA-Z0-9_-]+)*[.][a-zA-Z]{2,4}$/',$email)) {
    echo 
"■メールアドレス OK!\n";
} else {
    echo 
"■メールアドレス NG\n";
}
//--
$text "y_.y-mail@mail.com";
if (
preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/"$text)) {
    echo 
"■正しいメールアドレス(かもしれません)\n";
} else {
    echo 
"■正しくないメールアドレス(かもしれません)\n";
}
//--
echo "【メールアドレスのloose】";
$text "y_.y-mail@mail.com";
$result isValidInetAddress($text);
print_r($result);
echo 
"【メールアドレスのstrict】";
$result isValidInetAddress($text,true);
print_r($result);
echo 
"\n";

function 
isValidInetAddress($data$strict false){
    
$regex $strict '/^([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i' '/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?> :-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i';
    if (
preg_match($regextrim($data), $matches)) {
        return array(
$matches[1], $matches[2]);
    } else {
        return 
"■{$data}は、正しくないメールアドレス\n";
    }
}

/* ------------------------------------
 *  郵便番号の正規表現
 * ------------------------------------ */
$text "160-0001";
if (
preg_match("/^\d{3}-\d{4}$/"$text)) {
    echo 
"■{$text}は、正しい郵便番号です\n";
} else {
    echo 
"■{$text}は、正しくない郵便番号です\n";
}

/* ------------------------------------
 *  電話番号の正規表現
 * ------------------------------------ */
is_phone("0120-423-232");        //フリーダイヤル
is_phone("045-543-1122");        //固定電話
is_phone("090-5432-1122");        //携帯電話
is_phone("+080-03-5432-1122");    //国際電話

function is_phone($text){
    
$reg_phone_ptn '/^(\+\d{3}-)?(\d{1,5})-(\d{1,4})-(\d{3,5})$/';
    echo 
"\n";
    if(
preg_match($reg_phone_ptn,$text,$data)){
        
// 局番の桁数チェック
        
if((strlen($data[2]) + strlen($data[3])) <= 7){
            echo 
"■電話番号OK!\n";
        }else {
            echo 
"■電話番号NG\n";
        }
        
var_export($data);
    } else {
        echo 
"■電話番号NG\n";
    }
}

?>