jquery删除所有表情符号包括新的

时间:2017-09-22 14:45:25

标签: javascript jquery unicode

我不知道任何关于emoji个字符的unicode并尝试从输入中删除所有表情符号,找到了一个代码:

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
];

JSFiddle (将emojis从css部分复制到测试中)

它会删除一些但不是新的表情符号。如何将这些新的emojis unicode范围包含在此代码中?

例如,这不会删除nerd face表情符号,而unicode是here

1 个答案:

答案 0 :(得分:0)

function removeEmoji(text) {
  var res = '';

  for(var i = 0; i < text.length; i++) {
    var c = text[i];

    // Get UTF-32 code
    var code = c.charCodeAt(0);
    if(code >= 0xd800 && code < 0xdc00) {
      c += text[++i];
      code = (code - 0xd800) << 10;
      code |= c.charCodeAt(1) - 0xdc00;
      code += 0x10000;
    }

    // Skip Emoji symbols
    if (code < 0x1f000 || code >= 0x1fa00) {
      res += c;
    }
  }

  return res
}

var s = removeEmoji('ab'); // 'ab'