27
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsの正規表現での^と$

Last updated at Posted at 2015-02-15

Rails4での正規表現を使ってModelのVaildatesを実装するときに始めて知ったので、メモ。

郵便番号を正規表現でチェックする

エラーが出た実装

user.rb
class User < ActiveRecord::Base
  validates :zip_code, format: { with: /^\d{3}\-?\d{4}$/ }
end

これでアプリケーションを実行すると以下のエラーが出ました。

Screen Shot 2015-02-15 at 4.45.20 PM.png

The provided regular expression is using multiline anchors (^ or $), which may present a security risk. Did you mean to use \A and \z, or forgot to add the :multiline => true option?

セキュリティリスクがあるので

  • 行頭の ^\A
  • 行末の $\z

を使え、と言われた。

修正した実装

user.rb
class User < ActiveRecord::Base
  validates :zip_code, format: { with: /\A\d{3}\-?\d{4}\z/ }
end

これでエラーは出なくなりました。

Rails4から正規表現のルールが厳しくなって、 multiline: true が設定されていない場合は ^, $ はエラーになるそうです。なるほどなるほど :smiley:


参考

27
23
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?