原文来自:

https://www.cnblogs.com/tsjTSJ/p/7065544.html

最全最详细的用JS过滤Emoji表情的输入

 

在前端页面开发过程中,总会碰到不允许输入框输入emoji表情的需求,我的思路是通过编码用正则匹配表情,然后将其替换为空字符创。但是问题也是显而易见的,完整的编码集是什么呢?查阅了官方文档,发现上面并没有给出想要的答案。并且很多emoji表情除了主编码还有副编码(这是我给取的名字),举个例子:

  \uD83C\uDC00是一个表情,\uD83C\uDC00\u200D又是一个表情,我把\uD83C\uDC00称为主编码,\u200D称为副编码(或者衍生编码,反正意思理解了就行)。

最终解决方案如下:

  1. 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;
  2. var org_val = $("input").val();
  3.  
  4. if(regStr.test(org_val)){
  5.   $("#input").val(org_val.replace(regStr,""));
  6. }
    上面的正则可以匹配iOS10.2.1及之前的全部emoji表情,Android的表情因为比较多,如上面的正则有遗漏,可自行补充。测试一个表情的编码方法如下:
  1. <input type="text" />
  2.  
  3. var org_val = $("input").val();
  4. console.log(escape(org_val));
  5. //escape得到%uD83C%u.........格式的编码,可对应成\u...格式
  6.  
  7. 扩展阅读:
    1、escape 与encodeURI 的区别 ;

Differences between encodeURI, encodeURIComponent, and escape:Unicode characters

 Contents | JavaScript FAQ | Strings & RegExp FAQ | URL-encoding    

As a simple example of Unicode (non-ASCII) characters, the table below shows the URL encodings for part of the Cyrillic subset of the Unicode character set (\u0410 thru \u042F). Note that the same Unicode character may produce the encoding %uXXXX if you use escape and the encoding %XX%XXif you use encodeURI or encodeURIComponent.

Importantly, the functions escapeencodeURI, and encodeURIComponent work like that for other parts of the Unicode character set as well: only the escapefunction may return the encoding of the form %uXXXX. (See also ASCII andupper ASCII characters.)

  1. chr escape(chr) encodeURI(chr) encodeURIComponent(chr)
  2. А %u0410 %D0%90 %D0%90
  3. Б %u0411 %D0%91 %D0%91
  4. В %u0412 %D0%92 %D0%92
  5. Г %u0413 %D0%93 %D0%93
  6. Д %u0414 %D0%94 %D0%94
  7. Е %u0415 %D0%95 %D0%95
  8. Ж %u0416 %D0%96 %D0%96
  9. З %u0417 %D0%97 %D0%97
  10. И %u0418 %D0%98 %D0%98
  11. Й %u0419 %D0%99 %D0%99
  12. К %u041A %D0%9A %D0%9A
  13. Л %u041B %D0%9B %D0%9B
  14. М %u041C %D0%9C %D0%9C
  15. Н %u041D %D0%9D %D0%9D
  16. О %u041E %D0%9E %D0%9E
  17. П %u041F %D0%9F %D0%9F
  18. Р %u0420 %D0%A0 %D0%A0
  19. С %u0421 %D0%A1 %D0%A1
  20. Т %u0422 %D0%A2 %D0%A2
  21. У %u0423 %D0%A3 %D0%A3
  22. Ф %u0424 %D0%A4 %D0%A4
  23. Х %u0425 %D0%A5 %D0%A5
  24. Ц %u0426 %D0%A6 %D0%A6
  25. Ч %u0427 %D0%A7 %D0%A7
  26. Ш %u0428 %D0%A8 %D0%A8
  27. Щ %u0429 %D0%A9 %D0%A9
  28. Ъ %u042A %D0%AA %D0%AA
  29. Ы %u042B %D0%AB %D0%AB
  30. Ь %u042C %D0%AC %D0%AC
  31. Э %u042D %D0%AD %D0%AD
  32. Ю %u042E %D0%AE %D0%AE
  33. Я %u042F %D0%AF %D0%AF

Note also that for many Unicode characters, encodeURI or encodeURIComponentreturn the encoding %XX%XX%XX rather than %XX%XX, for example:

  1. chr escape(chr) encodeURI(chr) encodeURIComponent(chr)
  2. %u2260 %E2%89%A0 %E2%89%A0
  3. %u2261 %E2%89%A1 %E2%89%A1
  4. %u2262 %E2%89%A2 %E2%89%A2
  5. %u2263 %E2%89%A3 %E2%89%A3
  6. %u2264 %E2%89%A4 %E2%89%A4
  7. %u2265 %E2%89%A5 %E2%89%A5

(See Mathematical and Special Symbols for more examples.)

  1. 简单的来说就是 一个Unicode 编码的两种格式
    来自:http://www.javascripter.net/faq/escape-encodeuri-unicode.htm
  2.  
  3. 二、其他方式:
    def filter_emoji(desstr,restr=''):   
        '''''     过滤表情     '''     
       try:         
        co = re.compile(u'[\U00010000-\U0010ffff]')     
       except re.error:         
        co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')      ###一般emoji表情还有副字符,这里只匹配到了2个字符
  4.  
  5.    return co.sub(restr, desstr)
  1. 三。这里提供一个链接,fb,twitteremoji合集:
    https://emojipedia.org/facebook/
  2.  

Js 过滤emoji表情...持续补充中..的更多相关文章

  1. 最全最详细的用JS过滤Emoji表情的输入

    在前端页面开发过程中,总会碰到不允许输入框输入emoji表情的需求,我的思路是通过编码用正则匹配表情,然后将其替换为空字符创.但是问题也是显而易见的,完整的编码集是什么呢?查阅了官方文档,发现上面并没 ...

  2. 用JS过滤Emoji表情的输入

    本文为原创,转载请注明出处: cnzt       文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6773854.html 在前端页面开发过程中,总会碰到不允许 ...

  3. js过滤emoji表情符号

    手机端常常会遇到用户输入框,输入emoji,如果是数据库是UTF8,会遇到报错:SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for ...

  4. java代码过滤emoji表情

    可以新建一个过滤器的类,在类中书写如下代码: public static String filterEmoji(String source) {           if(source != null ...

  5. java过滤emoji表情(成功率高)

    转载自:http://blog.csdn.net/huangchao064/article/details/53283738 基本能过滤大部分的ios,安卓,微信emoji表情 有很多别的帖子搜出来很 ...

  6. 过滤特殊字符(包括过滤emoji表情)

    /** * 过滤特殊字符 * @param $text * @return mixed */ public static function filterSpecialChars($text) { // ...

  7. python3 清除过滤emoji表情

    python3 清除过滤emoji表情 方法一: emoji处理库,emoji官网:https://pypi.org/project/emoji/ #安装 pip install emoji 官方例子 ...

  8. phpstorm 工具使用技巧(持续补充中。。。)

    phpstorm 工具使用技巧(持续补充中...) 一.phpstorm大小写切换 1.选择要转换的目标字符串: //普通商家,普通折扣默认值'COMMON_DISCOUNT'=>10.00, ...

  9. Emoji表情在网页中显示

    最近遇到一个项目,客户手机上发送的表情要在电脑网页中显示,没有找到简便方法,于是有了以下方案. 由于Emoji表情传到后台是“口”,怎么找出接收数据中的表情是关键,各种搜索后,我用下面的正则表达式匹配 ...

随机推荐

  1. JQuery返回Json日期格式的問題

    用JQuery Ajax返回一個Entity的Json數據時,如果Entity的屬性中有日期格式,那返回來的是一串字符串,如下圖所示: 在網上找了很久也沒有找到一個好的解決方案,最後自己寫一個java ...

  2. wxWidgets:动态EVENT绑定

    我们已经看到如何使用静态EVENT TABLE来处理EVENT:但这种方式不够灵活.下面我们来看看如何在Event和处理函数间实现动态Bind. 仍然以那个简陋的Frame作为例子. 首先删除所有的静 ...

  3. Spring IOC - 控制反转(依赖注入) - 入门案例 - 获取对象的方式 - 别名标签

    1. IOC - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交 由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周 ...

  4. 合并单元格/VBA

    ' 合并某一列中相同数据的单元格 Sub MergeColumns() Dim rowN As Integer Dim i, j, m, n As Integer Dim col As Integer ...

  5. MongoDB整库备份+整库导入

    备份前检查: [root@Load29 tmp]# mongo localhost: MongoDB shell version: connecting to: localhost:/test Ser ...

  6. MySQL 特殊参数

    ###开发规范 开发规范:关键字大写,库名字小写,要有字符集 CREATE DATABSE oldboy CHARSET utf8;    ###建议采用第一种 CREATE DATABSE oldb ...

  7. Linux 期中架构 MySQL

     MySQL基础部分 mysql安装脚本 安装前请将相关安装包copy放到/server/tools目录下 -rw-r--r-- 1 root root 314149697 Mar 23  2017 ...

  8. 终端直接执行py文件,不需要python命令

    然后给脚本文件运行权限,方法(1)chmod +x ./*.py方法(2)chmod 755 ./*.py (777也无所谓啦) 这个命令不去调整,会出现permission denied的错误终端直 ...

  9. 什么是DSCP,如何使用DSCP标记搭配ROS策略

    一.什么是DSCP DSCP:差分服务代码点(Differentiated Services Code Point),IETF于1998年12月发布了Diff-Serv(Differentiated ...

  10. [UE4]多播代理实例

    .h DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLoginErrorEvent, FString, ErrorMessage); UPROPERTY(B ...