2025年05月18日

08.PHPの正規表現


ここではPHPで利用する正規表現方法を解説しています。

 

1.正規表現とは

正規表現とは、指定したい文字列をパターンで表記する方法です。

 

2.PHPの正規表現

PHPの正規表現は(シングルクォート)でデリミタで括ります

例) '/正規表現/'

上記は / (スラッシュ)をデリミタとした例です。

デリミタは、英数字、バックスラッシュ、空白文字以外の任意の文字をデリミタとして使うことができます。

一般的には / (スラッシュ)が利用されますが、これ以外に # (ハッシュ記号)~ (チルダ) が使われることもあります。

 JavaScriptの正規表現

PHPとJavaScriptの正規表現の記述は異なるので気を付けてください。

PHP        : '/正規表現/'

JavaScript/正規表現/

 

3.最低限、覚えたい正規表現

対象文字列 正規表現及び解説
itemという文字列
'/item/'

/を文字として指定したい場合は、他のデリミタを利用します。

'#/#'
item又はphpという文字列

orの使い方

|で複数値を区切ります。

'/item|php/'
改行文字

改行コードはデバイスによって異なります

・Windows:CR+LF

・Unix:LF

・Mac:CR

改行の正規表現は下記になります

'/[\r\n]+/'

\r はCR

\n はLF

[ ]は,[ ]内の文字列のどれかとの一致または不一致を表します。

[ ]の後ろの+は、複数可を表わす記号で、これを指定する事によりCRやLF以外にCR+LFも対象になります。

空白か?の判断 空白か?の判断は、文字がないケースと半角スペース等の空白文字で埋めつくされているケースがあるので、空白以外の文字があるか否かで判断します。

'/[^\s]/'

\sは、半角スペース、タブ(\f)、CR(\r)、LF(\n)、改ページ(\f)を指します。

[ ]内の^は、後ろの指定の否定なので半角スペース、タブ(\f)、CR(\r)、LF(\n)、改ページ(\f)以外を表します。

よって上記は空白ではない事を調べるときに使います。

但し、上記には全角スペースがないので、これを加えて表現が下記になります。

空白文字+全角スペースを加えた空白か?の判断

 

全角スペースを含めた空白文字以外の正規表現は下記になります。

'/[^\s ]/u'

[]の中の\sの後ろに全角スペースが入っています。

/の後ろのuはUTF-8モードのことで全角を指定する時にします。これがないと誤検知が発生することがあります。

行頭と行末にある全角スペースを含む空白文字 文字列の中の空白は残して、行頭と行末にある空白を削除したい時に指定する方法は下記になります。

'/^[\s ]+|[\s ]+$/u'

[]の中の\sの後ろに全角スペースが入っています。

[]の前のは^は行頭を表し、行末は$です。

[ ]の後ろの+は、複数可で|はORを表します。

上記の指定は文字列の中にある空白文字は対象外です。

クラス名、ID名で使えない文字 下記はクラス名やID名に使えない記号を指定しています。

'/[ -,.\/:-@\[-^`{-~]/'

クラス名やID名に使える文字は

①半角英数字と- (ハイフン)_(アンダースコア )

②U+0080以上の文字(すなわち2バイト文字は総て利用可)

というルールがあり、これ以外の文字は利用できません。

上記は UTF-8の文字コード表を参照して設定しています。

郵便番号のチェック 郵便番号は「3桁の数字-4桁の数字」のルールでチェックします。

'/^\d{3}-\d{4}$/'

\dは数字を表します。{n}のnは桁数を表します。

^は先頭を意味します。$は末尾を表します。

 

郵便番号を文字列の中から抽出する時は下記になります。

'/\d{3}-\d{4}/'
Gmailアドレスのチェック Gmailアドレスは下記でチェックします。

'/^[a-z\d][a-z\d.]{4,28}[a-z\d]@gmail.com$/'

Gmailで使える文字は「英数字」と「.」です。

先頭(^)文字は英数字([a-z\d])

末尾($)文字列は(英数字@gmail.com)

指定できる文字数は6~30文字です。

よって残りのの文字は「英数字」と「.」で{4,28}文字の範囲です。

 

Gmailアドレスを文字列の中から抽出する時は下記になります。

'/[a-z\d][a-z\d.]{4,28}[a-z\d]@gmail.com/'
Emailのチェック 下記は一般的に紹介されているEmailチェックです。

'/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/'

利用できる文字や制限が緩くて、このルールのメールプロバイダは見たことがありませんが、email一般は、これでチェックするしかないと思います。

 

Emailアドレスを文字列の中から抽出する時は下記になります。

'/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/'
電話番号をチェック 電話番号のチェックは下記を使います。

'/^0\d{1,2}-\d{3,4}-\d{4}$/'

電話番号ルールは下記になります

0(1桁~2桁の数字)-(3桁~4桁の数字)-(3桁~4桁の数字)

尚、0120及び0800の電話番号は上記ではチェックできません。

電話番号を文字列の中から抽出する時は下記になります。

'/0\d{1,2}-\d{3,4}-\d{4}/'

上記以外の正規表現を利用したい場合は、正規表現を解説したサイトを見て下さい。


関数一覧
  • 01.PHPとWordPressプログラム
  • 02.PHPの出力コマンド
  • 03.PHPの変数規則と文字連結
  • 04.PHPのif文
  • 05.PHPの配列とループ処理
  • 06.PHPのオブジェクト
  • 07.PHPの関数
  • 08.PHPの正規表現
  • 09.PHPファイルや関数の読み込み
  • 10.PHPのフォーム操作
  • 11.オートコンプリートとは?
  • array_keys()
  • array_reverse()
  • checkdate()
  • count()
  • date()
  • echo
  • empty()
  • explode()
  • implode()
  • in_array()
  • intval()
  • isset()
  • preg_match_all()
  • preg_match()
  • preg_replace()
  • preg_split()
  • print_r()
  • session_id()
  • session_start()
  • sprintf()
  • str_replace()
  • strpos()
  • trim()
  • var_dump()