UTF-8 の文字にマッチする正規表現
たつをさんとこが発端。
成瀬さんによる実用的な版から:
$RE_UTF8CHAR_STRICT = /(?: [\x00-\x7f]| # U+0000 - U+007F [\xC2-\xDF][\x80-\xBF]| # U+0080 - U+07FF [\xE0-\xEF][\x80-\xBF]{2}| # U+0800 - U+3FFFF (ry [\xF0-\xF4][\x80-\xBF]{3} # U+10000 - U+10FFFF (ry )/x
$RE_UTF8CHAR_STRICT_AND_SECURE = /(?: [\x00-\x7F]| # U+0000 - U+007F [\xC2-\xDF][\x80-\xBF]| # U+0080 - U+07FF \xE0[\xA0-\xBF][\x80-\xBF]| # U+0800 - U+0FFF [\xE1-\xEC][\x80-\xBF]{2}| # U+1000 - U+CFFF \xED[\x80-\x9F][\x80-\xBF]| # U+D000 - U+D7FF \xEF[\x80-\xBF][\x80-\xBD]| # U+E000 - U+FFFD \xF0[\x90-\xBF][\x80-\xBF]{2}| # U+10000 - U+3FFFF [\xF1-\xF3][\x80-\xBF]{3}| # U+40000 - U+FFFFF \xF4[\x80-\x8F][\x80-\xBF]{2} # U+100000 - U+10FFFF )/x
バラけて居るので自分ですぐ使えるように纏めさせてもらった。私が頭を使った部分は全くありません。ブックマークはリンク先推奨。変数名・インデント・記法(Perl to Ruby)を個人の趣味に直した関係で typo あるかも。未テストです。
こういう時は「リンク禁止」って言いたくなるな。このエントリだけ「オレのみ閲覧可能」とかできないのだろうか? 自サバ立てろってことかなぁ。