カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

メールアドレスをチェックする正規表現パターン

完全なメモ書きです。

^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*@[a-zA-Z0-9_-]+\.[a-zA-Z0-9\._-]+$

少しアップデートしました。こちらのほうが短くて済みます。
\wはアルファベット・数字・アンダースコアを表します。[a-zA-Z_0-9]

^\w+[\w.-]*@[\w-]+\.[\w.-]+$

参考URL:
https://murashun.jp/article/programming/regular-expression.html

2,906 views

外部サーバーのファイル有無を調べる

PHPにはファイルの有無を調べるfile_existsという便利な関数がありますが、
外部サーバーのファイルを確認することはできません。

そこで、HTTPヘッダーを取得し、ステータスコードからファイルの有無を確認してみましょう。

まずはHTTPヘッダーを取得。

$response = get_headers([任意のURL]);

取得したヘッダーからステータスコードを抜き出す。
ステータスコードは配列で返ってきたヘッダーの先頭にあるので、$response[0]の中から数字3桁をpreg_matchを使って抜き出します。

preg_match("/.*(\d{3}).*/", $response[0], $matches);

HTTPステータスコードを数値に変換。

$response_code = intval($matches[1]);

ステータスコードが200であればファイルが存在する、ということになります。


関数を作ると次のような感じになります。

function myFileExists($str_path)
{
    // HTTPヘッダーを取得
    $response = get_headers($str_path);

    // HTTPステータスコードを抜き出す
    if(preg_match("/.*(\d{3}).*/", $response[0], $matches)) {

        // HTTPステータスコードを取得
        $response_code = intval($matches[1]);

        if($response_code == 200) {

            return true;

        } else {

            return false;

        }

    } else {

        return false;

    }
}
1,827 views

正規表現の注意点

キャラクタークラス([])を使用する場合、[]内ではエスケープが無効化されます。
※言語の種類等によってエスケープが有効なものもあるようです。
その中で特殊な意味を持つ記号を通常のキャラクターとしてクラスに含めたいときは
記述する位置に注意する必要があります。
例えば「]」、「^」、「-」等です。

^ [の直後以外
] [の直後
リストの最後

参考URL: http://www.kt.rim.or.jp/~kbk/regex/regex.html

1,403 views

正規表現 特定の文字列を含まない文字の繰り返し

正規表現で、特定の文字を含まない文字列の検索と、
特定の文字列を含まない文字列の検索

テキスト例

「abc」
「bca」

特定の文字を含まない文字の繰り返し

「[^abc]*?」

この場合、「abc」も「bca」も検索にひっかかりません。

これは“a”と“b”と“c”が、それぞれ単独の文字として処理されるからです。
文字ではなく、文字列を指定して検索したい場合、以下のようにします。

特定の文字列を含まない文字の繰り返し
続きを読む…»

4,520 views

正規表現の最短一致

正規表現の文字列検索にて、最短一致を検索します。
デフォルトは最長一致ですが、量指定子("*"、"+"、"{}"等)の後に"?"を付けることで最短一致に変更できます。

Visual Basic

Dim regEx As Object
Dim Matches As Variant

'正規表現オブジェクト
Set regEx = CreateObject("VBScript.RegExp")

続きを読む…»

17,034 views