※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)