nodejs,javascript过滤emoj表情
Posted unionline
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs,javascript过滤emoj表情相关的知识,希望对你有一定的参考价值。
1 前言
由于带emoj表情的昵称无法存储在mysql character_set_server= utf8模式下,按照参考文章[1],改成utf8mb4,无效(可能使用方法不对)。
总体思路是,把昵称过滤emoj表情,得到过滤后的昵称。
2 代码
function filterNicknameWithEmoj(nickname){ var regStr = /[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030/ig; var nickname_filter=""; //regStr.test(nickname)会一次成功一次失败,待排查是否和regStr写法有关 if(regStr.test(nickname)){ nickname_filter = nickname.replace(regStr,""); nickname_filter = removeBlank(nickname_filter); return nickname_filter; } return nickname; } function removeBlank(str){ str = str.trim(); var ret = ""; for(var i = 0; i < str.length; i++){ if(str[i] != \' \'){ ret+=str[i]; } } return ret; }
正则表达式还有其它表示方法,这个正则表达式可以过滤ios10+全部表情包[2]
3 参考
[2] https://www.cnblogs.com/zt-blog/p/6773854.html
[3] https://segmentfault.com/q/1010000005840528
[4] https://segmentfault.com/q/1010000011875872/a-1020000011876055
以上是关于nodejs,javascript过滤emoj表情的主要内容,如果未能解决你的问题,请参考以下文章
《现代命令行工具指南》15.表情符号:在命令行中查找表情符号 - emoj
《现代命令行工具指南》15.表情符号:在命令行中查找表情符号 - emoj