標籤:ios nbsp 模式 排查 remove lan ret 運算式 正則
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;}
Regex還有其它表示方法,這個Regex可以過濾ios10+全部表情包[2]
3 參考
[1] 通過node.js儲存emoji到mysql
[2] https://www.cnblogs.com/zt-blog/p/6773854.html
[3] https://segmentfault.com/q/1010000005840528
[4] https://segmentfault.com/q/1010000011875872/a-1020000011876055
[5] 公眾平台暱稱亂碼emoji表情過濾
nodejs,javascript過濾emoj表情