2016-12-10 77 views
0

我使用下面的函數替換字符串中的表情圖案是偉大的工作:的JavaScript檢測如果字符串只包含unicode的表情符號

function doEmoji(s){ 
    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 
    ]; 
    var x = s.toString(16).replace(new RegExp(ranges.join('|'), 'g'),' whatever '); 
    return x; 
}; 

現在我要檢查,如果該字符串只包含表情符號或空格字符。 我想這樣做的原因是因爲我只想在沒有其他字符存在的情況下(除空格外)替換emojis。

一些例子:

Hello how are you? //do nothing 
‍‍ // replace emojis 
‍‍ // replace emojis 

我也許尋找一個簡單的解決方案,一個正則表達式。 感謝

+1

錨重複的替代品應該這樣做:'/ ^(?: alternative1 | alternative2 | alternative3)* $ /.test(str)' –

+0

你的代碼已經有了那個正則表達式。 ?? – melpomene

回答

0

只是一個小的調整,以找到字符串是否只是表情符號和空格...

const 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 
    ' ', // Also allow spaces 
].join('|'); 

const removeEmoji = str => str.replace(new RegExp(ranges, 'g'), ''); 

const isOnlyEmojis = str => !removeEmoji(str).length; 
相關問題