🐼

PHP学習①->正規表現

2023/09/14に公開

正規表現とは

複数の共通点をもつ文字列を、記号を用いて一行で表すこと

正規表現が使える代表的なPHP関数

・preg_match():最初に一致する文字列を取得する
・preg_match_all():一致した文字列をすべて取得する 
・preg_replace():一致した文字列を他の文字列に変換する
・preg_grep():一致した要素を配列で返す

正規表現一覧

正規表現 機能 補足
/A/ 部分一致 スラッシュで囲む
^A 前方一致 検索したい文字列の直前に^を付ける
A$ 後方一致 検索したい文字列の直後に$を付ける
\A~\z 完全一致 検索したい文字列を囲む
(バーティカルバー) 複数検索したい場合に使う
[] 任意の一文字を検索する ex.任意の小文字アルファベット [a-z]
. 改行以外のすべての1文字
+ 1回以上の繰り返し
* 0回以上の繰り返し

活用例

  • メールアドレスが正しく入力されているかをチェックする
    ※メールアドレスの入力チェックはどうやら奥が深そうなので、ここでは簡易チェックとする。
    メアド条件:
    使えるのは英数字と記号(._-)のみ
    ドメイン名の前には@が入る
preg_match('/\A[A-Za-z0-9._-]+@[A-Za-z0-9.]+\z/', 変数名)
  • 電話番号が正しく入力されているかをチェックする
    電話番号の条件
    〇〇〇-〇〇〇〇-〇〇〇〇 の三桁+四桁+四桁 
    それぞれの桁はハイフンでつながっている
    使えるのは0-9のみ
preg_match('/\A[0-9]{3}-[0-9]{4}-[0-9]{4}\z/',変数名)

※最初の三桁を090,080,070なのかチェック入れてもよかったかも…その場合は「0[7-9]0」とか。

  • 入力された電話番号から‐を取り除く
    使用する関数:preg_replace(正規表現,置換後の文字列,置換対象の文字列)
    ①電話番号の桁をそれぞれ()でグループ化する
    ②置換後の文字列を$1~3で表す
preg_replace('/\A([0-9]{3})-([0-9]{4})-([0-9]{4})\z/',$1$2$3,変数名)

感想

こういう風にメールアドレスとか電話番号とかの正確性チェックを行っているということが分かって面白い!
でも実際に使うとなると、中々複雑な式になりそうで
自分で1から作るのは難しそうだなと思いました…。
関係ないのですが、現在行政がやっているデジタル人材育成事業でプログラミング(Java)を学んでいるのですが、
あまりにカリキュラムが簡単すぎて…病みそうです。(笑)
授業と並行して自主学習を進めていこうと思います。
とりあえず授業ではJavaがメインなので、自分ではPHPを学習しようかなと。
本当は授業でフレームワーク等学べることを期待していたのですが、
どうやらSQLとの紐づけあたりまでしかやらないようです。

Discussion