絵文字を判定する正規表現

以下の記事の最初だけを読んで

/\p{Emoji}/u.test("😃"); 

みたいに書けば良いのかなぁと思ったらそうではなかった。

blog.tes.co.jp

読み進めるとこんな風に書きましょう、というのが出てくる。

/\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu;

github.com

で、 unicode.org にある emoji-data ってのを見てみた。
http://unicode.org/Public/emoji/12.0/emoji-data.txt

0..9 が入ってる。

0030..0039    ; Emoji                #  1.1 [10] (0️..9️)    digit zero..digit nine

1 がどうなるか試してみる。

> /\p{Emoji}/gu.test("1")
true

おー!たしかに。

> /\p{Emoji}/gu.test("あ")
false

「あ」だとちゃんと false になる。

提案されているやつで 1 を試す。

> /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu.test("1")
false

ちゃんと false になった。