■
絵文字にマッチさせる正規表現
#Shift_JIS体系におけるコード my $ascii = '[\x00-\x7f]'; #ASCIIと制御文字 my $two_bytes = '[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'; #漢字 my $h_katakana = '[\xa0-\xdf]'; # 半角カタカナ #絵文字コード正規表現 my $docomo = '(?:(?:\xf8[\x9f-\xfc])|(?:\xf9[\x40-\x49\x50-\x52\x55-\x57\x5b-\x5e\x72-\xfb]))'; my $ez = '(?:(?:[\xf3\xf6\xf7][\x40-\xfc])|(?:\xf4[\x40-\x8d]))'; my $voda = '\x1b\x24[GEFOPQ][\x21-\x7a]*\x0f'; #少々簡略 if ($str =~ m/^(?:$ascii|$two_bytes|$h_katakana)*?(?:$docomo|$ez|$voda)/){ print "emoji matched"; } else { print "emoji not matched"; }