ersetzen der unicode-emoji-symbol mit regexp in javascript

Wie Sie alle wissen, emoji Symbole codiert sind, bis zu 3 oder 4 bytes, so kann es belegen 2 Symbole in meinen string. Zum Beispiel '?wew?'.Länge = 7
Ich möchte feststellen, dass diese Symbole in meinen text, und ersetzen Sie Sie, um den Wert, der abhängig ist von seinem code.
Lesen ALSO, ich kam bis zu XRegExp Bibliothek mit unicode-plugin, aber noch nicht den Weg gefunden, wie es funktioniert.

var str = '?wew?';//\u1F601 symbol
var reg = XRegExp('[\u1F601-\u1F64F]', 'g'); // /[ὠ1-ὤF]/g -doesn't make a lot of sense  
//var reg = XRegExp('[\uD83D\uDE01-\uD83D\uDE4F]', 'g'); //Range out of order in character class
//var reg = XRegExp('\\p{L}', 'g'); //doesn't match my symbols
console.log(XRegExp.replace(str, reg, function(match){
   return encodeURIComponent(match);//here I want to have smth like that %F0%9F%98%84 to be able to map anything I want to this value and replace to it
}));

jsfiddle

Ich möchte wirklich nicht, um bruteforce-string suchen für die Folge von Zeichen aus meiner Reichweite. Könnte mir jemand helfen einen Weg zu finden, um dies mit regexp ' s.

BEARBEITET
Kam gerade eine Idee, von der Aufzählung all die emoji-Symbole. Besser als brutforce aber noch auf der Suche nach der besseren Idee

var reg = XRegExp('\uD83D\uDE01|\uD83D\uDE4F|...','g');
  • Warum sind Sie, der versucht, die bytes, sondern die codepoints? Beispiel Sie haben mit '[\u1F601-\u1F64F]' ist der richtige Weg, um eine Verbindung dieser Punkte (obwohl der block U+1F300-U+1F5FF).
  • Nicht nur bytes, ich habe versucht, viele Möglichkeiten, aber vielleicht habe ich es falsch verstanden. Was wäre die regexp mit denen zeichenelemente? XRegExp('[\u1F300-\u1F5FF]', 'g');?
  • Javascript unterstützt keine Zeichen über U+FFFF nativ. \u1F601 in einem Javascript-string kodiert zwei Zeichen, U+1F60, gefolgt von ASCII '1'. Es gibt keinen Weg, um U+1F601 in einer Charakter-Klasse.
  • Regex /[\uD800-\uDBFF][\uDC00-\uDFFF]/g mein problem gelöst. Es beinhaltet nicht nur emojis, sondern auch Sonderzeichen. Genannten stackoverflow.com/questions/3744721/...
Schreibe einen Kommentar