Apakah ada cara untuk memeriksa apakah string di JS adalah satu emoji tunggal?


20

Pertanyaannya sederhana: Saya punya string str, bagaimana cara memeriksa apakah strada satu emoji tunggal, dan tidak ada yang lain? Selain itu saya lebih suka tidak menggunakan perpustakaan lain.

Pertandingan "🍎", "β›ΉπŸΏβ€β™‚οΈ", "3️⃣"tapi tidak "πŸ“a", "𝕒","πŸŒπŸ€"

Saya mengalami masalah dalam menemukan solusi tetapi berikut adalah beberapa hal yang saya coba sejauh ini:


Solusi yang Dicoba 1 - Mainkan panjang dan ...operator

Saya belajar bahwa emoji menempati lebih dari satu byte, beberapa bahkan menempati 4 byte, atau lebih ... dan kita dapat mengukurnya melalui lengthproperti string :

console.log("🍎".length); // 2
console.log("πŸ›‘οΈ".length); // 3
console.log("β›ΉπŸΏβ€β™‚οΈ".length); // 6

Kemudian saya mengetahui bahwa ...operator memperhitungkannya dan memisahkan emoji dengan benar dalam array - Saya kemudian dapat melihat lengthproperti array yang dihasilkan dan mendeteksi apakah mereka berbeda.

str = "β›ΉπŸΏβ€β™‚οΈ";
if (str.length !== [...str].length) {
  // is emoji?
} else {
  // is not emoji
}

Tapi ini tidak memeriksa untuk karakter multi-byte lainnya seperti 𝕑yang panjangnya 2. Ditambah beberapa emoji masih terpisah secara aneh.


Attempted Solution 2 - Regex, ekspresi reguler

Tentu saja regex akan menjadi hal yang perlu diperhatikan tetapi saya belum menemukan solusi yang layak.

Regex jawaban ini\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff] berfungsi dengan baik untuk mendeteksi jika suatu string memiliki emoji, tetapi diterapkan pada situasi saya menghasilkan banyak masalah. Inilah tes saya:

Bagian A - Tanpa awal / akhir string regex ( ^dan $)

  • 2A.1 str.match(regex) sangat tidak konsisten, itu memecah beberapa emoji dan beberapa lainnya tidak dapat digunakan. Saya tidak melihat cara untuk mengetahui apakah itu bahkan mengandung karakter non-emoji atau jika mengandung lebih dari satu emoji:
let regex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/;

console.log("5️⃣".match(regex)); // [ '⃣', '⃣', index: 2, input: '5️⃣' ]
console.log("πŸ’‘".match(regex)); // [ 'πŸ’‘', 'πŸ’‘', index: 0, input: 'πŸ’‘' ]
console.log("🌑️🌑️".match(regex)); // [ '🌑', '🌑', index: 0, input: '🌑️🌑️' ]
console.log("aβ›…".match(regex)); // [ 'β›…', 'β›…', index: 1, input: 'aβ›…' ]
  • 2A.2 regex.test(str) mengembalikan true setiap kali emoji termasuk dalam string, yang bukan perilaku yang saya cari:
let regex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/;

console.log(regex.test("5️⃣")); // true - correct
console.log(regex.test("a")); // false - correct
console.log(regex.test("🌑️🌑️")); // true - should be false
console.log(regex.test("hello β›…!")); // true - should be false

Bagian B - Dengan awal / akhir string regex ( ^dan $)

  • 2B.1 str.match(regex) mengembalikan nullemoji tertentu karena suatu alasan. Saya tidak tahu mengapa, tetapi saya berasumsi ada kaitannya dengan mengapa str.match(regex)akan memecah emoji ini di Bagian A:
let regex = /^(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/;

console.log("5️⃣".match(regex)); // null
console.log("πŸ’‘".match(regex)); // [ 'πŸ’‘', 'πŸ’‘', index: 0, input: 'πŸ’‘' ]
console.log("🌑️".match(regex)); // null
console.log("β›…".match(regex)); // [ 'β›…', 'β›…', index: 1, input: 'aβ›…' ]
console.log("πŸŒπŸ€".match(regex)); // null
  • 2B.2 regex.test(str) akan kembali falsepada emoji yang sama di mana ia akan kembali nullpada str.match(regex):
let regex = /^(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/;

console.log(regex.test("5️⃣")); // false - should be true
console.log(regex.test("πŸ’‘")); // true - correct
console.log(regex.test("🌑️")); // false - should be true
console.log(regex.test("β›…")); // true - correct
console.log(regex.test("πŸŒπŸ€")); // false - correct

Bagian C - Ekspresi reguler lainnya

  • Saya menemukan ini tetapi memberikan inkonsistensi yang serupa, meskipun tidak sama /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|[\ud83c[\ude50\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g:
let regex = /^(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|[\ud83c[\ude50\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])$/g

console.log(regex.test("5️⃣")); // true - correct
console.log(regex.test("πŸ’‘")); // false - should be true
console.log(regex.test("🌑️")); // false - should be true
console.log(regex.test("β›…")); // true - correct
console.log(regex.test("πŸŒπŸ€")); // false - correct
  • Juga ini rusak parah (perubahan tes kedua berdasarkan tes pertama?)
let regex = /^(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|[\ud83c[\ude50\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])$/g

console.log(regex.test("β›ΉπŸΏβ€β™‚οΈ")); // false
console.log(regex.test("β›…")); // true
let regex = /^(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|[\ud83c[\ude50\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])$/g;

console.log(regex.test("β›Ή")); // true
console.log(regex.test("β›…")); // false

Apakah ada cara untuk mengatasi semua kekacauan emoji / unicode / regex ini? Apakah perpustakaan / apis satu-satunya cara? Bagaimana mereka melakukannya?



2
Saya pribadi berpikir mempertahankan regex bukanlah ide yang sangat bagus, kecuali Anda membuatnya dari spesifikasi unicode . Sudah ada perpustakaan yang melakukan itu. Lihat emoji-regex dan emoji.json .
Jake Holzinger

Terima kasih Wiktor StribiΕΌew, regex itu berfungsi dengan sempurna! Bolehkah saya tahu bagaimana atau dari mana Anda mendapatkan ini?
luxluxdev

1
Ada waktu dan tempat untuk perpustakaan. IMHO ini salah satunya. Biaya mempertahankan ketergantungan dengan versi dan ukuran file tampaknya lebih besar daripada meminta orang lain untuk memecahkan masalah yang sangat rumit ini untuk Anda.
Chris

1
Re: "bagaimana mereka melakukannya" perpustakaan yang terhubung dengan Daniel Vickers merujuk ke: unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table
Chris

Jawaban:


1

Menggunakan perpustakaan ini: https://github.com/foliojs/grapheme-breaker coba ini:

var str = "β›ΉπŸΏβ€β™‚οΈ";
var Grapheme = require('grapheme-splitter');
var splitter = new Grapheme();
console.log(splitter.splitGraphemes(str).length);

dan panjangnya harus kembali 1.


Perpustakaan ini mengagumkan, tetapi sudah tidak aktif selama satu tahun sekarang, namun ini terinspirasi oleh github.com/foliojs/grapheme-breaker yang baru-baru ini aktif :) (saya menghapus komentar lama saya karena ada tautan yang salah)
luxluxdev

Terima kasih untuk itu, saya juga memperbarui tautan dalam jawaban saya.
Daniel Vickers

1

Emoji ditentukan dalam UAX # 51. Properti \p{Emoji}harus bekerja, tetapi tidak.

Lakukan dengan cara yang sulit. Parse emoji-*.txt:

perl -C -lne'
    if (my ($c) = $_ =~ /^((?:(?:[[:xdigit:]]+ )|[[:xdigit:]]+\.\.)[[:xdigit:]]+)/) {
        if ($c =~ /\.\./) { # ranges
             my ($f, $t) = map { hex } split /\.\./, $c;
             print for map { chr } $f..$t;
        } else { # sequences
             print join "", map { chr hex } split /\s+/, $c;
        }
    }
' emoji-*.txt

Ini memberi kita daftar emoji yang dipisahkan baris baru. Menggunakan Regexp :: Assemble :: Compressed, hasilnya adalah

/^(?:[\u{23EB}\u{23EC}\u{23F0}\u{2607}-\u{260D}\u{260F}\u{2610}\u{2616}\u{2617}\u{2619}-\u{261C}\u{261E}\u{261F}\u{2624}\u{2625}\u{2627}-\u{2629}\u{262B}-\u{262D}\u{2630}-\u{2637}\u{263B}-\u{263F}\u{2643}-\u{2647}\u{2654}-\u{265E}\u{2661}\u{2662}\u{2669}-\u{267A}\u{267C}\u{267D}\u{2680}-\u{2685}\u{2690}\u{2691}\u{269D}-\u{269F}\u{26A2}-\u{26A9}\u{26AC}-\u{26AF}\u{26B2}-\u{26BC}\u{26BF}-\u{26C3}\u{26C6}\u{26C7}\u{26C9}-\u{26CE}\u{26D5}-\u{26E8}\u{26EB}-\u{26EF}\u{26FB}\u{26FC}\u{26FE}-\u{2701}\u{2703}\u{2704}\u{2710}\u{2711}\u{2754}\u{2755}\u{2765}-\u{2767}\u{2795}-\u{2797}\u{1F000}-\u{1F003}\u{1F005}-\u{1F0CE}\u{1F0D0}-\u{1F0FF}\u{1F10D}-\u{1F10F}\u{1F16C}-\u{1F16F}\u{1F191}-\u{1F19A}\u{1F1AD}-\u{1F1E5}\u{1F201}\u{1F203}-\u{1F20F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F23C}-\u{1F23F}\u{1F249}-\u{1F30C}\u{1F310}-\u{1F314}\u{1F316}-\u{1F31B}\u{1F31D}-\u{1F320}\u{1F322}\u{1F323}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F377}\u{1F379}-\u{1F37C}\u{1F37E}-\u{1F384}\u{1F386}-\u{1F392}\u{1F394}\u{1F395}\u{1F39C}\u{1F39D}\u{1F3A0}-\u{1F3A6}\u{1F3A8}-\u{1F3AB}\u{1F3AF}-\u{1F3C1}\u{1F3C5}\u{1F3C8}\u{1F3C9}\u{1F3CF}-\u{1F3D3}\u{1F3E1}-\u{1F3EC}\u{1F3EE}-\u{1F3F2}\u{1F3F8}-\u{1F407}\u{1F409}-\u{1F414}\u{1F416}-\u{1F41E}\u{1F420}-\u{1F425}\u{1F427}-\u{1F43E}\u{1F440}\u{1F444}\u{1F445}\u{1F451}\u{1F452}\u{1F454}-\u{1F465}\u{1F479}-\u{1F47B}\u{1F47E}-\u{1F480}\u{1F484}\u{1F488}-\u{1F4A2}\u{1F4A4}-\u{1F4A9}\u{1F4AB}-\u{1F4AF}\u{1F4B1}\u{1F4B2}\u{1F4B4}-\u{1F4BA}\u{1F4BC}-\u{1F4BE}\u{1F4C0}-\u{1F4CA}\u{1F4CC}-\u{1F4D9}\u{1F4DB}-\u{1F4DE}\u{1F4E0}-\u{1F4E3}\u{1F4E7}-\u{1F4E9}\u{1F4EE}-\u{1F4F6}\u{1F4F8}\u{1F4FC}\u{1F4FF}-\u{1F507}\u{1F509}-\u{1F50C}\u{1F50E}-\u{1F511}\u{1F514}-\u{1F53D}\u{1F546}-\u{1F548}\u{1F54B}-\u{1F54E}\u{1F568}-\u{1F56E}\u{1F571}\u{1F572}\u{1F57B}-\u{1F586}\u{1F588}\u{1F589}\u{1F58E}\u{1F58F}\u{1F591}-\u{1F594}\u{1F597}-\u{1F5A3}\u{1F5A6}\u{1F5A7}\u{1F5A9}-\u{1F5B0}\u{1F5B3}-\u{1F5BB}\u{1F5BD}-\u{1F5C1}\u{1F5C5}-\u{1F5D0}\u{1F5D4}-\u{1F5DB}\u{1F5DF}\u{1F5E0}\u{1F5E4}-\u{1F5E7}\u{1F5E9}-\u{1F5EE}\u{1F5F0}-\u{1F5F2}\u{1F5F4}-\u{1F5F9}\u{1F5FB}-\u{1F60F}\u{1F611}-\u{1F644}\u{1F648}-\u{1F64A}\u{1F680}-\u{1F686}\u{1F688}-\u{1F68C}\u{1F68E}-\u{1F690}\u{1F692}\u{1F693}\u{1F695}-\u{1F697}\u{1F699}-\u{1F6A2}\u{1F6A4}-\u{1F6AC}\u{1F6AE}-\u{1F6B1}\u{1F6B3}\u{1F6B7}\u{1F6B8}\u{1F6BB}\u{1F6BD}-\u{1F6BF}\u{1F6C1}-\u{1F6CA}\u{1F6D0}-\u{1F6D4}\u{1F6D6}-\u{1F6DF}\u{1F6E6}-\u{1F6E8}\u{1F6EB}-\u{1F6EF}\u{1F6F1}\u{1F6F2}\u{1F6F4}-\u{1F6F8}\u{1F6FB}-\u{1F6FF}\u{1F774}-\u{1F77F}\u{1F7D5}-\u{1F7FF}\u{1F80C}-\u{1F80F}\u{1F848}-\u{1F84F}\u{1F85A}-\u{1F85F}\u{1F888}-\u{1F88F}\u{1F8AE}-\u{1F8FF}\u{1F90D}\u{1F90E}\u{1F910}-\u{1F917}\u{1F91D}\u{1F920}-\u{1F925}\u{1F927}-\u{1F92F}\u{1F93A}\u{1F940}-\u{1F945}\u{1F947}-\u{1F94B}\u{1F94D}-\u{1F970}\u{1F973}-\u{1F979}\u{1F97C}-\u{1F9B4}\u{1F9B7}\u{1F9BA}\u{1F9BC}-\u{1F9BF}\u{1F9C1}-\u{1F9CC}\u{1F9D0}\u{1F9E0}-\u{1FFFD}\u{E0020}-\u{E007F}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]?|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]?|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]?|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]?|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]?|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]?|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]?|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]?|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]?|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]?|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]?|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]?|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]?|\u{26F9}[\u{200D}\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F3C4}[\u{200D}\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F3CA}[\u{200D}\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F3CB}[\u{200D}\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F3CC}[\u{200D}\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F575}[\u{200D}\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{270C}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{270D}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]?|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]?|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]?|\u{1F3C2}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F442}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F446}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F447}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F448}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F449}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F44D}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F44E}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{1F574}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]?|\u{261D}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]?|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]?|\u{1F3C3}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F468}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F469}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F46E}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F471}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F473}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F477}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F481}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F482}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F486}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F487}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F590}[\u{FE0E}\u{FE0F}\u{1F3FB}-\u{1F3FF}]|\u{1F645}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F646}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F647}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F64B}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F64D}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F64E}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F6A3}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F6B4}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F6B5}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F6B6}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F926}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F937}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F938}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F939}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F93D}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F93E}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9B8}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9B9}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9CD}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9CE}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9CF}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9D1}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9D6}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9D7}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9D8}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9D9}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9DA}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9DB}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9DC}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{1F9DD}[\u{200D}\u{1F3FB}-\u{1F3FF}]?|\u{270A}[\u{1F3FB}-\u{1F3FF}]?|\u{270B}[\u{1F3FB}-\u{1F3FF}]?|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]?|\u{1F385}[\u{1F3FB}-\u{1F3FF}]?|\u{1F3C7}[\u{1F3FB}-\u{1F3FF}]?|\u{1F443}[\u{1F3FB}-\u{1F3FF}]?|\u{1F44A}[\u{1F3FB}-\u{1F3FF}]?|\u{1F44B}[\u{1F3FB}-\u{1F3FF}]?|\u{1F44C}[\u{1F3FB}-\u{1F3FF}]?|\u{1F44F}[\u{1F3FB}-\u{1F3FF}]?|\u{1F450}[\u{1F3FB}-\u{1F3FF}]?|\u{1F466}[\u{1F3FB}-\u{1F3FF}]?|\u{1F467}[\u{1F3FB}-\u{1F3FF}]?|\u{1F46B}[\u{1F3FB}-\u{1F3FF}]?|\u{1F46C}[\u{1F3FB}-\u{1F3FF}]?|\u{1F46D}[\u{1F3FB}-\u{1F3FF}]?|\u{1F470}[\u{1F3FB}-\u{1F3FF}]?|\u{1F472}[\u{1F3FB}-\u{1F3FF}]?|\u{1F474}[\u{1F3FB}-\u{1F3FF}]?|\u{1F475}[\u{1F3FB}-\u{1F3FF}]?|\u{1F476}[\u{1F3FB}-\u{1F3FF}]?|\u{1F478}[\u{1F3FB}-\u{1F3FF}]?|\u{1F47C}[\u{1F3FB}-\u{1F3FF}]?|\u{1F483}[\u{1F3FB}-\u{1F3FF}]?|\u{1F485}[\u{1F3FB}-\u{1F3FF}]?|\u{1F4AA}[\u{1F3FB}-\u{1F3FF}]?|\u{1F595}[\u{1F3FB}-\u{1F3FF}]?|\u{1F596}[\u{1F3FB}-\u{1F3FF}]?|\u{1F64C}[\u{1F3FB}-\u{1F3FF}]?|\u{1F64F}[\u{1F3FB}-\u{1F3FF}]?|\u{1F6C0}[\u{1F3FB}-\u{1F3FF}]?|\u{1F6CC}[\u{1F3FB}-\u{1F3FF}]?|\u{1F90F}[\u{1F3FB}-\u{1F3FF}]?|\u{1F918}[\u{1F3FB}-\u{1F3FF}]?|\u{1F919}[\u{1F3FB}-\u{1F3FF}]?|\u{1F91A}[\u{1F3FB}-\u{1F3FF}]?|\u{1F91B}[\u{1F3FB}-\u{1F3FF}]?|\u{1F91C}[\u{1F3FB}-\u{1F3FF}]?|\u{1F91E}[\u{1F3FB}-\u{1F3FF}]?|\u{1F931}[\u{1F3FB}-\u{1F3FF}]?|\u{1F932}[\u{1F3FB}-\u{1F3FF}]?|\u{1F933}[\u{1F3FB}-\u{1F3FF}]?|\u{1F934}[\u{1F3FB}-\u{1F3FF}]?|\u{1F935}[\u{1F3FB}-\u{1F3FF}]?|\u{1F936}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9B5}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9B6}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9BB}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9D2}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9D3}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9D4}[\u{1F3FB}-\u{1F3FF}]?|\u{1F9D5}[\u{1F3FB}-\u{1F3FF}]?|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]?|\u{1F57A}[\u{1F3FB}-\u{1F3FF}]|\u{1F91F}[\u{1F3FB}-\u{1F3FF}]|\u{1F930}[\u{1F3FB}-\u{1F3FF}]|0[\u{20E3}\u{FE0E}\u{FE0F}]?|1[\u{20E3}\u{FE0E}\u{FE0F}]?|2[\u{20E3}\u{FE0E}\u{FE0F}]?|3[\u{20E3}\u{FE0E}\u{FE0F}]?|4[\u{20E3}\u{FE0E}\u{FE0F}]?|5[\u{20E3}\u{FE0E}\u{FE0F}]?|6[\u{20E3}\u{FE0E}\u{FE0F}]?|7[\u{20E3}\u{FE0E}\u{FE0F}]?|8[\u{20E3}\u{FE0E}\u{FE0F}]?|9[\u{20E3}\u{FE0E}\u{FE0F}]?|\\*[\u{20E3}\u{FE0E}\u{FE0F}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]?|\u{1F3F3}[\u{200D}\u{FE0E}\u{FE0F}]?|\u{1F415}[\u{200D}\u{FE0E}\u{FE0F}]?|\u{1F441}[\u{200D}\u{FE0E}\u{FE0F}]?|#[\u{20E3}\u{FE0E}\u{FE0F}]|\u{2194}[\u{FE0E}\u{FE0F}]?|\u{2195}[\u{FE0E}\u{FE0F}]?|\u{2196}[\u{FE0E}\u{FE0F}]?|\u{2197}[\u{FE0E}\u{FE0F}]?|\u{2198}[\u{FE0E}\u{FE0F}]?|\u{2199}[\u{FE0E}\u{FE0F}]?|\u{21A9}[\u{FE0E}\u{FE0F}]?|\u{21AA}[\u{FE0E}\u{FE0F}]?|\u{231A}[\u{FE0E}\u{FE0F}]?|\u{231B}[\u{FE0E}\u{FE0F}]?|\u{23E9}[\u{FE0E}\u{FE0F}]?|\u{23EA}[\u{FE0E}\u{FE0F}]?|\u{23ED}[\u{FE0E}\u{FE0F}]?|\u{23EE}[\u{FE0E}\u{FE0F}]?|\u{23EF}[\u{FE0E}\u{FE0F}]?|\u{23F1}[\u{FE0E}\u{FE0F}]?|\u{23F2}[\u{FE0E}\u{FE0F}]?|\u{23F3}[\u{FE0E}\u{FE0F}]?|\u{23F8}[\u{FE0E}\u{FE0F}]?|\u{23F9}[\u{FE0E}\u{FE0F}]?|\u{23FA}[\u{FE0E}\u{FE0F}]?|\u{25AA}[\u{FE0E}\u{FE0F}]?|\u{25AB}[\u{FE0E}\u{FE0F}]?|\u{25FB}[\u{FE0E}\u{FE0F}]?|\u{25FC}[\u{FE0E}\u{FE0F}]?|\u{25FD}[\u{FE0E}\u{FE0F}]?|\u{25FE}[\u{FE0E}\u{FE0F}]?|\u{2600}[\u{FE0E}\u{FE0F}]?|\u{2601}[\u{FE0E}\u{FE0F}]?|\u{2602}[\u{FE0E}\u{FE0F}]?|\u{2603}[\u{FE0E}\u{FE0F}]?|\u{2604}[\u{FE0E}\u{FE0F}]?|\u{2614}[\u{FE0E}\u{FE0F}]?|\u{2615}[\u{FE0E}\u{FE0F}]?|\u{2622}[\u{FE0E}\u{FE0F}]?|\u{2623}[\u{FE0E}\u{FE0F}]?|\u{262E}[\u{FE0E}\u{FE0F}]?|\u{262F}[\u{FE0E}\u{FE0F}]?|\u{2638}[\u{FE0E}\u{FE0F}]?|\u{2639}[\u{FE0E}\u{FE0F}]?|\u{263A}[\u{FE0E}\u{FE0F}]?|\u{2648}[\u{FE0E}\u{FE0F}]?|\u{2649}[\u{FE0E}\u{FE0F}]?|\u{264A}[\u{FE0E}\u{FE0F}]?|\u{264B}[\u{FE0E}\u{FE0F}]?|\u{264C}[\u{FE0E}\u{FE0F}]?|\u{264D}[\u{FE0E}\u{FE0F}]?|\u{264E}[\u{FE0E}\u{FE0F}]?|\u{264F}[\u{FE0E}\u{FE0F}]?|\u{2650}[\u{FE0E}\u{FE0F}]?|\u{2651}[\u{FE0E}\u{FE0F}]?|\u{2652}[\u{FE0E}\u{FE0F}]?|\u{2653}[\u{FE0E}\u{FE0F}]?|\u{2665}[\u{FE0E}\u{FE0F}]?|\u{2666}[\u{FE0E}\u{FE0F}]?|\u{2692}[\u{FE0E}\u{FE0F}]?|\u{2693}[\u{FE0E}\u{FE0F}]?|\u{2694}[\u{FE0E}\u{FE0F}]?|\u{2696}[\u{FE0E}\u{FE0F}]?|\u{2697}[\u{FE0E}\u{FE0F}]?|\u{269B}[\u{FE0E}\u{FE0F}]?|\u{269C}[\u{FE0E}\u{FE0F}]?|\u{26A0}[\u{FE0E}\u{FE0F}]?|\u{26A1}[\u{FE0E}\u{FE0F}]?|\u{26AA}[\u{FE0E}\u{FE0F}]?|\u{26AB}[\u{FE0E}\u{FE0F}]?|\u{26B0}[\u{FE0E}\u{FE0F}]?|\u{26B1}[\u{FE0E}\u{FE0F}]?|\u{26BD}[\u{FE0E}\u{FE0F}]?|\u{26BE}[\u{FE0E}\u{FE0F}]?|\u{26C4}[\u{FE0E}\u{FE0F}]?|\u{26C5}[\u{FE0E}\u{FE0F}]?|\u{26CF}[\u{FE0E}\u{FE0F}]?|\u{26D3}[\u{FE0E}\u{FE0F}]?|\u{26D4}[\u{FE0E}\u{FE0F}]?|\u{26E9}[\u{FE0E}\u{FE0F}]?|\u{26EA}[\u{FE0E}\u{FE0F}]?|\u{26F0}[\u{FE0E}\u{FE0F}]?|\u{26F1}[\u{FE0E}\u{FE0F}]?|\u{26F2}[\u{FE0E}\u{FE0F}]?|\u{26F3}[\u{FE0E}\u{FE0F}]?|\u{26F4}[\u{FE0E}\u{FE0F}]?|\u{26F5}[\u{FE0E}\u{FE0F}]?|\u{26F7}[\u{FE0E}\u{FE0F}]?|\u{26F8}[\u{FE0E}\u{FE0F}]?|\u{26FA}[\u{FE0E}\u{FE0F}]?|\u{2708}[\u{FE0E}\u{FE0F}]?|\u{2709}[\u{FE0E}\u{FE0F}]?|\u{2733}[\u{FE0E}\u{FE0F}]?|\u{2734}[\u{FE0E}\u{FE0F}]?|\u{2753}[\u{FE0E}\u{FE0F}]?|\u{2763}[\u{FE0E}\u{FE0F}]?|\u{2764}[\u{FE0E}\u{FE0F}]?|\u{2934}[\u{FE0E}\u{FE0F}]?|\u{2935}[\u{FE0E}\u{FE0F}]?|\u{2B05}[\u{FE0E}\u{FE0F}]?|\u{2B06}[\u{FE0E}\u{FE0F}]?|\u{2B07}[\u{FE0E}\u{FE0F}]?|\u{2B1B}[\u{FE0E}\u{FE0F}]?|\u{2B1C}[\u{FE0E}\u{FE0F}]?|\u{1F170}[\u{FE0E}\u{FE0F}]?|\u{1F171}[\u{FE0E}\u{FE0F}]?|\u{1F17E}[\u{FE0E}\u{FE0F}]?|\u{1F17F}[\u{FE0E}\u{FE0F}]?|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]?|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]?|\u{1F202}[\u{FE0E}\u{FE0F}]?|\u{1F237}[\u{FE0E}\u{FE0F}]?|\u{1F30D}[\u{FE0E}\u{FE0F}]?|\u{1F30E}[\u{FE0E}\u{FE0F}]?|\u{1F30F}[\u{FE0E}\u{FE0F}]?|\u{1F315}[\u{FE0E}\u{FE0F}]?|\u{1F31C}[\u{FE0E}\u{FE0F}]?|\u{1F321}[\u{FE0E}\u{FE0F}]?|\u{1F324}[\u{FE0E}\u{FE0F}]?|\u{1F325}[\u{FE0E}\u{FE0F}]?|\u{1F326}[\u{FE0E}\u{FE0F}]?|\u{1F327}[\u{FE0E}\u{FE0F}]?|\u{1F328}[\u{FE0E}\u{FE0F}]?|\u{1F329}[\u{FE0E}\u{FE0F}]?|\u{1F32A}[\u{FE0E}\u{FE0F}]?|\u{1F32B}[\u{FE0E}\u{FE0F}]?|\u{1F32C}[\u{FE0E}\u{FE0F}]?|\u{1F336}[\u{FE0E}\u{FE0F}]?|\u{1F378}[\u{FE0E}\u{FE0F}]?|\u{1F37D}[\u{FE0E}\u{FE0F}]?|\u{1F393}[\u{FE0E}\u{FE0F}]?|\u{1F396}[\u{FE0E}\u{FE0F}]?|\u{1F397}[\u{FE0E}\u{FE0F}]?|\u{1F399}[\u{FE0E}\u{FE0F}]?|\u{1F39A}[\u{FE0E}\u{FE0F}]?|\u{1F39B}[\u{FE0E}\u{FE0F}]?|\u{1F39E}[\u{FE0E}\u{FE0F}]?|\u{1F39F}[\u{FE0E}\u{FE0F}]?|\u{1F3A7}[\u{FE0E}\u{FE0F}]?|\u{1F3AC}[\u{FE0E}\u{FE0F}]?|\u{1F3AD}[\u{FE0E}\u{FE0F}]?|\u{1F3AE}[\u{FE0E}\u{FE0F}]?|\u{1F3C6}[\u{FE0E}\u{FE0F}]?|\u{1F3CD}[\u{FE0E}\u{FE0F}]?|\u{1F3CE}[\u{FE0E}\u{FE0F}]?|\u{1F3D4}[\u{FE0E}\u{FE0F}]?|\u{1F3D5}[\u{FE0E}\u{FE0F}]?|\u{1F3D6}[\u{FE0E}\u{FE0F}]?|\u{1F3D7}[\u{FE0E}\u{FE0F}]?|\u{1F3D8}[\u{FE0E}\u{FE0F}]?|\u{1F3D9}[\u{FE0E}\u{FE0F}]?|\u{1F3DA}[\u{FE0E}\u{FE0F}]?|\u{1F3DB}[\u{FE0E}\u{FE0F}]?|\u{1F3DC}[\u{FE0E}\u{FE0F}]?|\u{1F3DD}[\u{FE0E}\u{FE0F}]?|\u{1F3DE}[\u{FE0E}\u{FE0F}]?|\u{1F3DF}[\u{FE0E}\u{FE0F}]?|\u{1F3E0}[\u{FE0E}\u{FE0F}]?|\u{1F3ED}[\u{FE0E}\u{FE0F}]?|\u{1F3F4}[\u{200D}\u{E0067}]?|\u{1F3F5}[\u{FE0E}\u{FE0F}]?|\u{1F3F7}[\u{FE0E}\u{FE0F}]?|\u{1F408}[\u{FE0E}\u{FE0F}]?|\u{1F41F}[\u{FE0E}\u{FE0F}]?|\u{1F426}[\u{FE0E}\u{FE0F}]?|\u{1F43F}[\u{FE0E}\u{FE0F}]?|\u{1F453}[\u{FE0E}\u{FE0F}]?|\u{1F46A}[\u{FE0E}\u{FE0F}]?|\u{1F47D}[\u{FE0E}\u{FE0F}]?|\u{1F4A3}[\u{FE0E}\u{FE0F}]?|\u{1F4B0}[\u{FE0E}\u{FE0F}]?|\u{1F4B3}[\u{FE0E}\u{FE0F}]?|\u{1F4BB}[\u{FE0E}\u{FE0F}]?|\u{1F4BF}[\u{FE0E}\u{FE0F}]?|\u{1F4CB}[\u{FE0E}\u{FE0F}]?|\u{1F4DA}[\u{FE0E}\u{FE0F}]?|\u{1F4DF}[\u{FE0E}\u{FE0F}]?|\u{1F4E4}[\u{FE0E}\u{FE0F}]?|\u{1F4E5}[\u{FE0E}\u{FE0F}]?|\u{1F4E6}[\u{FE0E}\u{FE0F}]?|\u{1F4EA}[\u{FE0E}\u{FE0F}]?|\u{1F4EB}[\u{FE0E}\u{FE0F}]?|\u{1F4EC}[\u{FE0E}\u{FE0F}]?|\u{1F4ED}[\u{FE0E}\u{FE0F}]?|\u{1F4F7}[\u{FE0E}\u{FE0F}]?|\u{1F4F9}[\u{FE0E}\u{FE0F}]?|\u{1F4FA}[\u{FE0E}\u{FE0F}]?|\u{1F4FB}[\u{FE0E}\u{FE0F}]?|\u{1F4FD}[\u{FE0E}\u{FE0F}]?|\u{1F508}[\u{FE0E}\u{FE0F}]?|\u{1F50D}[\u{FE0E}\u{FE0F}]?|\u{1F512}[\u{FE0E}\u{FE0F}]?|\u{1F513}[\u{FE0E}\u{FE0F}]?|\u{1F549}[\u{FE0E}\u{FE0F}]?|\u{1F54A}[\u{FE0E}\u{FE0F}]?|\u{1F550}[\u{FE0E}\u{FE0F}]?|\u{1F551}[\u{FE0E}\u{FE0F}]?|\u{1F552}[\u{FE0E}\u{FE0F}]?|\u{1F553}[\u{FE0E}\u{FE0F}]?|\u{1F554}[\u{FE0E}\u{FE0F}]?|\u{1F555}[\u{FE0E}\u{FE0F}]?|\u{1F556}[\u{FE0E}\u{FE0F}]?|\u{1F557}[\u{FE0E}\u{FE0F}]?|\u{1F558}[\u{FE0E}\u{FE0F}]?|\u{1F559}[\u{FE0E}\u{FE0F}]?|\u{1F55A}[\u{FE0E}\u{FE0F}]?|\u{1F55B}[\u{FE0E}\u{FE0F}]?|\u{1F55C}[\u{FE0E}\u{FE0F}]?|\u{1F55D}[\u{FE0E}\u{FE0F}]?|\u{1F55E}[\u{FE0E}\u{FE0F}]?|\u{1F55F}[\u{FE0E}\u{FE0F}]?|\u{1F560}[\u{FE0E}\u{FE0F}]?|\u{1F561}[\u{FE0E}\u{FE0F}]?|\u{1F562}[\u{FE0E}\u{FE0F}]?|\u{1F563}[\u{FE0E}\u{FE0F}]?|\u{1F564}[\u{FE0E}\u{FE0F}]?|\u{1F565}[\u{FE0E}\u{FE0F}]?|\u{1F566}[\u{FE0E}\u{FE0F}]?|\u{1F567}[\u{FE0E}\u{FE0F}]?|\u{1F56F}[\u{FE0E}\u{FE0F}]?|\u{1F570}[\u{FE0E}\u{FE0F}]?|\u{1F573}[\u{FE0E}\u{FE0F}]?|\u{1F576}[\u{FE0E}\u{FE0F}]?|\u{1F577}[\u{FE0E}\u{FE0F}]?|\u{1F578}[\u{FE0E}\u{FE0F}]?|\u{1F579}[\u{FE0E}\u{FE0F}]?|\u{1F58A}[\u{FE0E}\u{FE0F}]?|\u{1F58B}[\u{FE0E}\u{FE0F}]?|\u{1F58C}[\u{FE0E}\u{FE0F}]?|\u{1F58D}[\u{FE0E}\u{FE0F}]?|\u{1F5B1}[\u{FE0E}\u{FE0F}]?|\u{1F5B2}[\u{FE0E}\u{FE0F}]?|\u{1F5C2}[\u{FE0E}\u{FE0F}]?|\u{1F5C3}[\u{FE0E}\u{FE0F}]?|\u{1F5C4}[\u{FE0E}\u{FE0F}]?|\u{1F5D1}[\u{FE0E}\u{FE0F}]?|\u{1F5D2}[\u{FE0E}\u{FE0F}]?|\u{1F5D3}[\u{FE0E}\u{FE0F}]?|\u{1F5DC}[\u{FE0E}\u{FE0F}]?|\u{1F5DD}[\u{FE0E}\u{FE0F}]?|\u{1F5DE}[\u{FE0E}\u{FE0F}]?|\u{1F5FA}[\u{FE0E}\u{FE0F}]?|\u{1F610}[\u{FE0E}\u{FE0F}]?|\u{1F687}[\u{FE0E}\u{FE0F}]?|\u{1F68D}[\u{FE0E}\u{FE0F}]?|\u{1F691}[\u{FE0E}\u{FE0F}]?|\u{1F694}[\u{FE0E}\u{FE0F}]?|\u{1F698}[\u{FE0E}\u{FE0F}]?|\u{1F6AD}[\u{FE0E}\u{FE0F}]?|\u{1F6B2}[\u{FE0E}\u{FE0F}]?|\u{1F6B9}[\u{FE0E}\u{FE0F}]?|\u{1F6BA}[\u{FE0E}\u{FE0F}]?|\u{1F6BC}[\u{FE0E}\u{FE0F}]?|\u{1F6CB}[\u{FE0E}\u{FE0F}]?|\u{1F6CD}[\u{FE0E}\u{FE0F}]?|\u{1F6CE}[\u{FE0E}\u{FE0F}]?|\u{1F6CF}[\u{FE0E}\u{FE0F}]?|\u{1F6E0}[\u{FE0E}\u{FE0F}]?|\u{1F6E1}[\u{FE0E}\u{FE0F}]?|\u{1F6E2}[\u{FE0E}\u{FE0F}]?|\u{1F6E3}[\u{FE0E}\u{FE0F}]?|\u{1F6E4}[\u{FE0E}\u{FE0F}]?|\u{1F6E5}[\u{FE0E}\u{FE0F}]?|\uA9[\u{FE0E}\u{FE0F}]|\uAE[\u{FE0E}\u{FE0F}]|\u{203C}[\u{FE0E}\u{FE0F}]|\u{2049}[\u{FE0E}\u{FE0F}]|\u{2122}[\u{FE0E}\u{FE0F}]|\u{2139}[\u{FE0E}\u{FE0F}]|\u{2328}[\u{FE0E}\u{FE0F}]|\u{23CF}[\u{FE0E}\u{FE0F}]|\u{24C2}[\u{FE0E}\u{FE0F}]|\u{25B6}[\u{FE0E}\u{FE0F}]|\u{25C0}[\u{FE0E}\u{FE0F}]|\u{260E}[\u{FE0E}\u{FE0F}]|\u{2611}[\u{FE0E}\u{FE0F}]|\u{2618}[\u{FE0E}\u{FE0F}]|\u{2620}[\u{FE0E}\u{FE0F}]|\u{2626}[\u{FE0E}\u{FE0F}]|\u{262A}[\u{FE0E}\u{FE0F}]|\u{2640}[\u{FE0E}\u{FE0F}]|\u{2642}[\u{FE0E}\u{FE0F}]|\u{265F}[\u{FE0E}\u{FE0F}]|\u{2660}[\u{FE0E}\u{FE0F}]|\u{2663}[\u{FE0E}\u{FE0F}]|\u{2668}[\u{FE0E}\u{FE0F}]|\u{267B}[\u{FE0E}\u{FE0F}]|\u{267E}[\u{FE0E}\u{FE0F}]|\u{267F}[\u{FE0E}\u{FE0F}]|\u{2695}[\u{FE0E}\u{FE0F}]|\u{2699}[\u{FE0E}\u{FE0F}]|\u{26C8}[\u{FE0E}\u{FE0F}]|\u{26D1}[\u{FE0E}\u{FE0F}]|\u{26FD}[\u{FE0E}\u{FE0F}]|\u{2702}[\u{FE0E}\u{FE0F}]|\u{270F}[\u{FE0E}\u{FE0F}]|\u{2712}[\u{FE0E}\u{FE0F}]|\u{2714}[\u{FE0E}\u{FE0F}]|\u{2716}[\u{FE0E}\u{FE0F}]|\u{271D}[\u{FE0E}\u{FE0F}]|\u{2721}[\u{FE0E}\u{FE0F}]|\u{2744}[\u{FE0E}\u{FE0F}]|\u{2747}[\u{FE0E}\u{FE0F}]|\u{2757}[\u{FE0E}\u{FE0F}]|\u{27A1}[\u{FE0E}\u{FE0F}]|\u{2B50}[\u{FE0E}\u{FE0F}]|\u{2B55}[\u{FE0E}\u{FE0F}]|\u{3030}[\u{FE0E}\u{FE0F}]|\u{303D}[\u{FE0E}\u{FE0F}]|\u{3297}[\u{FE0E}\u{FE0F}]|\u{3299}[\u{FE0E}\u{FE0F}]|\u{1F004}[\u{FE0E}\u{FE0F}]|\u{1F21A}[\u{FE0E}\u{FE0F}]|\u{1F22F}[\u{FE0E}\u{FE0F}]|\u{1F587}[\u{FE0E}\u{FE0F}]|\u{1F5A5}[\u{FE0E}\u{FE0F}]|\u{1F5A8}[\u{FE0E}\u{FE0F}]|\u{1F5BC}[\u{FE0E}\u{FE0F}]|\u{1F5E1}[\u{FE0E}\u{FE0F}]|\u{1F5E3}[\u{FE0E}\u{FE0F}]|\u{1F5E8}[\u{FE0E}\u{FE0F}]|\u{1F5EF}[\u{FE0E}\u{FE0F}]|\u{1F5F3}[\u{FE0E}\u{FE0F}]|\u{1F6E9}[\u{FE0E}\u{FE0F}]|\u{1F6F0}[\u{FE0E}\u{FE0F}]|\u{1F6F3}[\u{FE0E}\u{FE0F}]|\u{1F1F4}\u{1F1F2}?|\u{1F1F6}\u{1F1E6}?|\u{1F1FD}\u{1F1F0}?|\u{1F46F}\u{200D}?|\u{1F93C}\u{200D}?|\u{1F9DE}\u{200D}?|\u{1F9DF}\u{200D}?)$/u

Terima kasih atas penjelasannya, sangat membantu! Namun saya tidak bisa membuat regex Anda yang dihasilkan berfungsi karena kesalahan keluar di mana pun saya mencobanya.
luxluxdev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.