Skip to main content

Ruby on Railsで改行込みの文章に正規表現当ててバグを仕込んだ話

Ruby on Railsエンジニアのマスタカです
正規表現書いたらバグを仕込んだのでその話


・環境
rails 5.2.4.1

・コード
改行があると最後の行しか見てない模様
これどハマりした

a = "masterka"
a.match?(/^\w*$/)
=> true

a = "bbbb\ncccc"
a.match?(/^\w*$/)
=> true

a = "bbbbあ\ncccc"
a.match?(/^\w*$/)
=> true #本当はfalseになってほしい

a = "bbbbあ\nccccあ"
a.match?(/^\w*$/)
=> false

・正しくは

a = "bbbbあ\ncccc"
a.gsub(/(\r\n?|\n)/, '').match?(/^\w*$/)
=> false

正規表現はちゃんとテスト書かないと大変なことになりますね

関連記事:

Pocket