dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

【Ruby】正規表現マッチには、^ と $ ではなく \A と \z を使おう

要旨

^$ の場合

[1] pry(main)> regex = /^https:\/\/.+$/
=> /^https:\/\/.+$/
[2] pry(main)> 'javascript:exploitcode() /*
https://safesite.example.com
*/'.scan(regex)
=> ["https://safesite.example.com"]

rubular.com

\A\z の場合

[3] pry(main)> regex2 = /\Ahttps:\/\/.+\z/
=> /\Ahttps:\/\/.+\z/
[4] pry(main)> 'javascript:exploitcode() /*
https://safesite.example.com
*/'.scan(regex2)
=> []

rubular.com

詳細

詳細は下記の記事に譲る。かいつまむと、Rubyはデフォルトで複数行マッチなので、 ^ $ だと文中の行頭・行末もマッチしてしまう。

blog.tokumaru.org