web-dev-qa-db-fra.com

Comment détecter les emoji en utilisant javascript

J'ai besoin d'aide pour savoir si une entrée contient un emoji/émoticône japonais.

Actuellement, mon jeu de caractères est charset=utf-8. Lors de la saisie de texte, l'utilisateur peut saisir des caractères/alpanumériques/symboles japonais mais s'il insère un emoji, onsubmit JavaScript vérifiera s'il y a un emoji, un message d'erreur s'affichera.

Je n'arrive pas à faire fonctionner cela parce que je n'ai aucune idée de la façon de détecter un emoji en JavaScript?

29
user2699175

Vous pouvez utiliser l'expression régulière suivante:

/(?:[\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-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\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

Si vous souhaitez simplement le supprimer de la chaîne, vous pouvez faire quelque chose comme ça.

function removeEmojis (string) {
  var 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;

  return string.replace(regex, '');
}
21
Lucas G.

Nous pouvons détecter toutes les listes de paires de substitution ou les caractères Emoji dans une plage spécifique. Si le problème lié au stockage de la chaîne d'entrée dans la base de données comme la version MySQL avant 5.5, nous devons détecter et supprimer toutes les paires de substitution à l'aide de l'expression rationnelle ci-dessous

/([\uD800-\uDBFF][\uDC00-\uDFFF])/g.
9
RiyasAbdulla

Vous pouvez utiliser une expression régulière de cette lib emoji-regex

7
iKBAHT

Fonction simple qui renvoie true si votre chaîne contient un ou plusieurs emojis.

function isEmoji(str) {
    var ranges = [
        '\ud83c[\udf00-\udfff]', // U+1F300 to U+1F3FF
        '\ud83d[\udc00-\ude4f]', // U+1F400 to U+1F64F
        '\ud83d[\ude80-\udeff]' // U+1F680 to U+1F6FF
    ];
    if (str.match(ranges.join('|'))) {
        return true;
    } else {
        return false;
    }
}
6
gidim

Vous pouvez utiliser une expression régulière pour la détecter dans le texte d'entrée:

/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g
4
andorx

vérifier les emoji comme des soufflets

function getEmojiChars(text) {

console.log(text.match(/\ud83c[\udf00-\udfff]|\ud83d[\udc00-\ude4f]|\ud83d[\ude80-\udeff]/g))  ;
}

vous obtiendrez le tableau des emoji dans le texte

0
Debashis Chowdhury