2016-05-07 21 views
3

トーンの研究の後、私はTwemojiライブラリを使用してリアルタイムで絵文字を解析する方法を見つけました。Javascript文字列とパースで絵文字を検索

ここで、テキスト内に絵文字があるかどうかを特定し、その絵文字の位置を把握して解析機能を実行する方法を理解する必要があります。

いくつかの例のテキストは文字列全体の中に見つけると、その進コードを取得するサロゲートペアを返し、Twemojiライブラリを解析するために、次の機能を使用する必要が

It is a great day . 

することができます。

function entityForSymbolInContainer(selector) { 
    var code = data.message.body.codePointAt(0); 
    var codeHex = code.toString(16); 
    while (codeHex.length < 4) { 
     codeHex = "0" + codeHex; 
    } 

    return codeHex; 
} 

// Get emoji hex code 
    var emoji = entityForSymbolInContainer(data.message.body); 
// For given an HEX codepoint, returns UTF16 surrogate pairs 
    var emoji = twemoji.convert.fromCodePoint(emoji); 
// Given a generic string, it will replace all emoji with an <img> tag 
    var emoji = twemoji.parse(emoji); 

テキスト内に絵文字があるかどうかを確認するために、次のチェックを使用しています。問題は、簡単な笑顔のために私に警告しないことです。しかし、私が "シャツとネクタイ"()を入力すると、それが私に警告されます。

var string = "It is a great day ."; 
var emojiRegex = /([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g; 

if (string.match(emojiRegex)) { 
    alert("emoji found"); 
} 

絵文字を拾わない正規表現の問題についてお手伝いしてください。その後、私は文字列内でそれを見つけることができるはずです。

ありがとうございました!

+0

\ uD83D \ uDE00としてUTF-16でエンコードされたU + 1F600です。あなたの正規表現はそれを絵文字であるとはみなしません。 (それは\ UD83D \ uDDFFで止まります。) –

+0

よろしくお願いします。あなたはより完全な正規表現のためのリソースを知っていますか? –

+1

絵文字を検出するアルゴリズムを開発する前に、絵文字の意味を明確に定義する必要があります。誰でも、正規表現を書いた人は、U + 1F600を絵文字にするとは考えていませんでした。 –

答えて

-1

この投稿は、emojisと非常に良い説明を照合するための非常に包括的な正規表現を提供します。彼は正規表現をlodashライブラリによって公開されたものに基づいています。

(?:[\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]) 

https://medium.com/@thekevinscott/emojis-in-javascript-f693d0eb79fb