# File lib/json/pure/generator.rb, line 104
    def valid_utf8?(string)
      string =~
         /\A( [\x09\x0a\x0d\x20-\x7e]         # ASCII
         | [\xc2-\xdf][\x80-\xbf]             # non-overlong 2-byte
         |  \xe0[\xa0-\xbf][\x80-\xbf]        # excluding overlongs
         | [\xe1-\xec\xee\xef][\x80-\xbf]{2}  # straight 3-byte
         |  \xed[\x80-\x9f][\x80-\xbf]        # excluding surrogates
         |  \xf0[\x90-\xbf][\x80-\xbf]{2}     # planes 1-3
         | [\xf1-\xf3][\x80-\xbf]{3}          # planes 4-15
         |  \xf4[\x80-\x8f][\x80-\xbf]{2}     # plane 16
        )*\z/nx
    end