Existe uma maneira de verificar se uma string em JS é um único emoji?


20

A pergunta é simples: eu tenho uma string str, como verifico se strhá um emoji único e mais nada? Além disso, eu preferiria não usar outra biblioteca.

Jogo "🍎", "⛹🏿‍♂️", "3️⃣"mas não "🍓a", "𝕒","🍌🍀"

Estou tendo problemas para encontrar uma solução, mas aqui estão algumas coisas que tentei até agora:


Tentativa de solução 1 - Explorar comprimentos e ...operador

Aprendi que os emojis ocupam mais de um byte, alguns até 4 bytes ou mais ... e podemos medir isso através da lengthpropriedade da string :

console.log("🍎".length); // 2
console.log("🛡️".length); // 3
console.log("⛹🏿‍♂️".length); // 6

Descobri que o ...operador leva isso em consideração e separa corretamente os emojis na matriz - pude ver a lengthpropriedade da matriz resultante e detectar se eram diferentes.

str = "⛹🏿‍♂️";
if (str.length !== [...str].length) {
  // is emoji?
} else {
  // is not emoji
}

Mas isso não verifica outros caracteres de vários bytes, como o 𝕡comprimento de 2. Além disso, alguns emojis ainda estavam se separando de uma maneira estranha.


Tentativa de solução 2 - Regex, expressões regulares

É claro que o regex seria algo a se analisar, mas ainda não encontrei uma solução viável.

O regex dessa resposta\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff] funciona perfeitamente bem para detectar se uma string possui emojis, mas aplicada à minha situação, ela produz muitos problemas. Aqui estão meus testes:

Parte A - Sem início / fim da expressão regular reg ( ^e $)

  • 2A.1 str.match(regex) é muito inconsistente, decompõe alguns emojis e outros inutilizáveis. Não vejo uma maneira de descobrir se ele contém caracteres que não sejam emoji ou se contém mais de um 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) retorna true sempre que um emoji é incluído na string, o que não é o comportamento que estou procurando:
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

Parte B - Com o início / fim da expressão regular reg ( ^e $)

  • 2B.1 str.match(regex) retorna nullem determinados emojis por algum motivo. Não tenho idéia do porquê, mas estou assumindo que ele tem alguma relação com o porquê de str.match(regex)quebrar esses emojis na Parte 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) retornará falsenos mesmos emojis onde ele iria retornar nullem 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

Parte C - Outras expressões regulares

  • Eu encontrei este, mas fornece inconsistências semelhantes, embora não sejam as mesmas /(?:[\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
  • Também isso quebra horrivelmente (o segundo teste é alterado com base no primeiro teste?)
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

Existe uma maneira de contornar toda essa bagunça emoji / unicode / regex? As bibliotecas / APIs são a única maneira? Como eles fazem isso?



2
Pessoalmente, acho que manter uma regex não é uma boa ideia, a menos que você a esteja gerando a partir da especificação unicode . Já existem bibliotecas que estão fazendo isso. Veja emoji-regex e emoji.json .
Jake Holzinger

Obrigado Wiktor Stribiżew, esse regex funciona perfeitamente! Posso saber como ou de onde você tirou isso?
luxluxdev

11
Há um tempo e um lugar para bibliotecas. IMHO este é um deles. O custo de manter uma dependência com suas versões e tamanho do arquivo parece mais do que compensado por ter alguém resolvendo esse problema muito complexo para você.
26419 Chris

11
Re: "como é que eles fazem isso" a biblioteca que Daniel Vickers ligada refere-se a: unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table
Chris

Respostas:


1

Usando esta biblioteca: https://github.com/foliojs/grapheme-breaker, tente o seguinte:

var str = "⛹🏿‍♂️";
var Grapheme = require('grapheme-splitter');
var splitter = new Grapheme();
console.log(splitter.splitGraphemes(str).length);

e o comprimento deve retornar 1.


Esta biblioteca é incrível, mas está inativa há um ano, no entanto, é inspirada no github.com/foliojs/grapheme-breaker, que está ativo muito recentemente :) (excluí meu antigo comentário porque tinha o link errado)
luxluxdev

Obrigado por isso, também atualizei o link na minha resposta.
Daniel Vickers

1

Os emojis são especificados no UAX # 51. A propriedade \p{Emoji}deve funcionar, mas não.

Faça da maneira mais difícil. Analisar 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

Isso nos fornece uma lista separada por nova linha de todos os emojis. Usando Regexp :: Assemble :: Compressed, o resultado é

/^(?:[\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

Obrigado pela explicação, realmente útil! No entanto, não consigo fazer com que o seu regex resultante funcione, pois ele erros em qualquer lugar que eu tente.
Luxluxdev #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.