input输入表情符号

<input type="text" placeholder="" v-model="text" @input="onInput()" />
//禁止输入表情符号
onInput () {
      var reg = /[\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
      this.text = this.text.replace(reg, '')
}
//允许输入表情符号及颜文字
//表情符号转码
encodeEmoji(text){
  var patt=/[\ud800-\udbff][\udc00-\udfff]/g;
  // 检测utf16字符正则
  text = text.replace(patt, (char)=>{
    var H, L, code;
    if (char.length===2) {
      H = char.charCodeAt(0);
      // 取出高位
      L = char.charCodeAt(1);
      // 取出低位
      code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00;
      // 转换算法
      return "&#" + code + ";";
    } else {
      return char;
    }
  })
  return text
},

 

posted @ 2021-12-06 20:23  chicidol  阅读(387)  评论(0编辑  收藏  举报