2016-12-10 2 views
0

смайликов, я использую следующую функцию для замены смайликов в строке и работает прекрасно:Javascript обнаружить, если строка содержит только Юникод

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; 
Смежные вопросы