JSの文字列が単一の絵文字かどうかを確認する方法はありますか?
質問は簡単です。文字列があるのstrですstrが、1つの絵文字かどうかを確認するにはどうすればよいですか。さらに、私は別のライブラリを使用しないことを望みます。 マッチ"🍎"、"⛹🏿♂️"、"3️⃣"ではなく"🍓a"、"𝕒"、"🍌🍀" 解決策が見つからないのですが、これまでに試したことがいくつかあります。 試行されたソリューション1-長さと...演算子を試してみる 絵文字は1バイト以上、一部は4バイト以上も占めることを学びました...文字列のlengthプロパティを介してそれを測定できます: console.log("🍎".length); // 2 console.log("🛡️".length); // 3 console.log("⛹🏿♂️".length); // 6 次に、...演算子がこれを考慮に入れて、配列内の絵文字を正しく分離していることがわかりました。結果の配列のlengthプロパティを確認して、それらが異なるかどうかを検出できました。 str = "⛹🏿♂️"; if (str.length !== [...str].length) { // is emoji? } else { // is not emoji } しかし、これは𝕡長さが2 などの他のマルチバイト文字をチェックしません。さらに、一部の絵文字はまだ奇妙な形で分離されていました。 試行されたソリューション2-正規表現、正規表現 もちろん正規表現は調べるべきものですが、私はまだ実行可能な解決策を見つけていません。 この回答の正規表現\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]は、文字列に絵文字があるかどうかを検出するために完全に正常に機能しますが、私の状況に適用すると、多くの問題が発生します。これが私のテストです: パートA-文字列の正規表現の開始/終了なし(^および$) 2A.1 str.match(regex)は非常に一貫性がなく、一部の絵文字とその他の使用できないものを分類します。絵文字以外の文字が含まれているかどうか、または複数の絵文字が含まれているかどうかを確認する方法がわかりません。 let regex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/; console.log("5️⃣".match(regex)); // [ '⃣', …