# 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