欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android过滤emoji表情正则表达式

程序员文章站 2022-05-25 14:45:16
做了一些信息提交的操作,输入了Emoji表情时,后台数据库无法存储原因:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去讨论了一些方案,最后还是前端来做过滤,如果是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]

写了个静态方法使用:

 1 /** 
 2      * Emoji表情校验 
 3      * 
 4      * @param string 
 5      * @return 
 6      */  
 7     public static boolean isEmoji(String string) {  
 8         //过滤Emoji表情  
 9         Pattern p = Pattern.compile("[^\\u0000-\\uFFFF]");  
10         //过滤Emoji表情和颜文字  
11         //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]");  
12         Matcher m = p.matcher(string);  
13         return m.find();  
14     }