L'intervallo è stato selezionato è l'uso Area Privata, contenenti caratteri non standard. Vettori utilizzati per codificare le emoji come valori diversi e incoerenti all'interno di questo intervallo.
Più recentemente, all'emoji sono stati assegnati codepoint standard "unificati". Molti di questi sono al di fuori del Piano Multilingue di Base, nel blocco U + 1F300-U + 1F5FF, incluso l'esempio U + 1F534 Large Red Circle.
È possibile rilevare questi caratteri con [\U0001F300-\U0001F5FF]
in un motore regex che supportava caratteri non BMP, ma JavaScript RegExp
non è una tale bestia. Purtroppo il modello di stringa di JS è basata su unità UTF-16 di codice, in modo che ci si deve lavorare con le UTF-16 surrogati in un espressione regolare:
return this.replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '')
Tuttavia, notare che ci sono altri personaggi del multilingue di base Aereo che viene usato come emoji dai telefoni ma che predica a lungo le emoji. Ad esempio, U + 2665 è il tradizionale personaggio di Heart Suit ♥, ma è possibile renderlo come un emoji grafico su alcuni dispositivi. Spetta a te se lo tratti come emoji e tenti di rimuoverlo. Vedi this list per ulteriori esempi.
[Ci sono molti personaggi in quell'intervallo] (http://inamidst.com/stuff/unidata/) - forse dovresti invece rimuovere i singoli codepoint che non ti piacciono? – sarnold
Penso che http://stackoverflow.com/questions/3744721/javascript-strings-outside-of-the-bmp risponda alla tua domanda. –
Ecco un buon articolo che tratta anche di questi intervalli: http://crocodillon.com/blog/parsing-emoji-unicode-in-javascript – acme