详解Android过滤emoji表情正则表达式

做了一些信息提交的操作,输入了Emoji表情时,后台数据库无法存储

原因:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去

讨论了一些方案,最后还是前端来做过滤,如果是Emoji表情直接干掉,因此也找了一些正则表达式,记录下

只过滤一Emoji表情:

[^\u0000-\uFFFF]

过滤Emoji表情和颜文字:

[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]|[\\ud83e\\udd00-\\ud83e\\uddff]|[\\u2300-\\u23ff]|[\\u2500-\\u25ff]|[\\u2100-\\u21ff]|[\\u0000-\\u00ff]|[\\u2b00-\\u2bff]|[\\u2d06]|[\\u3030]

写了个静态方法使用:

/** 
   * Emoji表情校验 
   * 
   * @param string 
   * @return 
   */ 
  public static boolean isEmoji(String string) { 
    //过滤Emoji表情 
    Pattern p = Pattern.compile("[^\\u0000-\\uFFFF]"); 
    //过滤Emoji表情和颜文字 
    //Pattern p = Pattern.compile("[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]|[\\ud83e\\udd00-\\ud83e\\uddff]|[\\u2300-\\u23ff]|[\\u2500-\\u25ff]|[\\u2100-\\u21ff]|[\\u0000-\\u00ff]|[\\u2b00-\\u2bff]|[\\u2d06]|[\\u3030]"); 
    Matcher m = p.matcher(string); 
    return m.find(); 
  }

总结

以上所述是小编给大家介绍的Android过滤emoji表情正则表达式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

你可能感兴趣的:(详解Android过滤emoji表情正则表达式)