#WHY
今日は初めてformatオプションを使ったので、使う上で学んだことや調べたことをアウトプットしていく
##formatオプション
withオプションで与えられた正規表現と属性の値がマッチするかどうかを検証する。
以下のような記述をすることによって文字の種類を指定することができる。
validates :name, format: { with: /\A[a-zA-Z]+\z/,message: "英文字のみが使えます" }
##正規表現
文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを調べるための表現方法。
###[a-z]
角括弧[]を使用することで角括弧で囲まれた文字のうちいずれか1つがマッチするかをチェックする。
[a-z]はアルファベットのaからzまでのいずれかにマッチという意味。
###\d
数字を表す特殊文字。特殊文字を使用する場合は直前に\を記述しなければならない。
[a-z\d]は英数字のいずれか1つにマッチという意味。
###{n, m}
直前の文字が少なくとも n 回、多くても m 回という文字数の制約を追加する。
例えば、{8, }は、直前の文字が少なくとも8回出現するものにマッチという意味になる。
###iオプション
大文字・小文字を区別せずに検索する。
.
ハイフンやピリオドなど含めた全ての英数字において、どの1文字にもマッチ。
###+
直前の文字が1回以上の繰り返しにマッチ。
###アンカー
幅0の文字列にマッチ。幅0とは文字と文字の間、文字列の先頭、文字列の末尾、などを意味する。ある特定の条件を満たす「位置」にマッチ。
メタ文字 | 説明 |
---|---|
\A | 文字列の先頭にマッチ |
\Z | 文字列の末尾にマッチ、 ただし文字列の最後の文字が改行ならばそれの手前にマッチ |
\z | 文字列の末尾にマッチ |
正規表現を確認できるサイトがありました!
https://regexper.com/
こういうので遊びがてら使っているとだんだん使い方が身についていきそうですね!