※2022年から技術系の記事は個人ブログに投稿しております。ぜひこちらもご覧ください→yamaday0u Blog
初心者向けに主な正規表現のパターンを整理しました。
主な正規表現のパターン一覧
| パターン | 意味 |
|---|---|
| [a-z] | 角括弧で囲まれた文字のいずれか1個にマッチ(この場合はaからzのいずれかの文字にマッチ) |
| \d | 数字にマッチ |
| \D | 数字以外にマッチ |
| {n} | 直前のパターンを n 回繰り返すものにマッチ |
| {n, m} | 直前の文字が少なくともn回、多くてもm回出現するものにマッチ |
| . | 改行以外のどの1文字にもマッチ |
| * | 直前の部分式の0回以上の繰り返しにマッチ |
| + | 直前の部分式の1回以上の繰り返しにマッチ |
| \A | 直後の文字列が先頭にある文字列にマッチ |
| \z | 直前の文字列が末尾にある文字列にマッチ |
| ?= | 直後に設定した文字が続く文字列にマッチ |
| *? | 直前に設定した文字が0回以上続く文字列をチェックし、?の直後の文字が出た段階でその1文字を返す |
修飾子
| パターン | 意味 |
|---|---|
| /i | 大文字と小文字を区別しない |
「*」の意味を深ぼる
| パターン | 意味 |
|---|---|
| * | 直前の文字の0回以上の繰り返しにマッチ |
「*」の「0回以上の繰り返しにマッチ」がちょっとわかりにくいので、「+」と比較しながら確認します。
| パターン | 意味 | マッチする文字列の例 |
|---|---|---|
| a.*z | aから始まってzで終わる2桁以上の文字列 | az, abz,abczなど |
| a.+z | aから始まってzで終わる3桁以上の文字列 | abz,abczなど |
「*」自体は1桁以上の文字列を求めないので、上記の例のように2桁の文字列でもマッチします。「.」は改行以外のどの文字にもマッチしますが、「*」が後に付くことで「.」にあたる文字がなくてもマッチします。
一方で「+」は1桁以上の文字列を求めるので、2桁の文字列にはマッチしません。
そのまま使える正規表現の主なパターン一覧
| パターン | 意味 |
|---|---|
| /\A[ぁ-んァ-ン一-龥]/ | 全角ひらがな、全角カタカナ、漢字 |
| /\A[ァ-ヶー-]+\z/ | 全角カタカナ |
| /\A[a-zA-Z0-9]+\z/ | 半角英数 |
| /\A\d{3}[-]\d{4}\z/ | 郵便番号(「-」を含む且つ7桁) |
RailsのActiveRecordの機能で使えるバリデーション
正規表現とは異なりますが、RailsのActiveRecordのバリデーションヘルパーの一つであるnumericalityでは、以下のオプションで使うことで簡単にバリデーションを設定することができます。
※備忘録として一時的にこの記事に残していますが、今後バリデーションの記事を作成した場合は、本項目はそちらへ移動します。
| パターン | 意味 |
|---|---|
| greater_than_or_equal_to: 〇〇 | 〇〇以上の数値 |
| less_than_or_equal_to: 〇〇 | 〇〇以下の数値 |
正規表現を試せるサイト
Rubularという、Rubyで使える正規表現を試すことができるサイトがあります。
自分で作った正規表現が意図した文字列やパターンにマッチするか確認することができるので、正規表現への理解を深める意味でも有益なサイトです。
参考資料
Ruby 3.0.0 リファレンスマニュアル>正規表現
Railsガイドv6.0 Active Record バリデーション
murashun.jp 基本的な正規表現一覧
TechRacho [連載:正規表現] Unicode文字プロパティについて(1)