原文来自:

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

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

 

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

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

最终解决方案如下:

 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 org_val = $("input").val(); if(regStr.test(org_val)){
  $("#input").val(org_val.replace(regStr,""));
}
上面的正则可以匹配iOS10.2.1及之前的全部emoji表情,Android的表情因为比较多,如上面的正则有遗漏,可自行补充。测试一个表情的编码方法如下:
<input type="text" />

 var org_val = $("input").val();
console.log(escape(org_val));
//escape得到%uD83C%u.........格式的编码,可对应成\u...格式 扩展阅读:
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.)

chr    escape(chr)   encodeURI(chr)  encodeURIComponent(chr)
А %u0410 %D0%90 %D0%90
Б %u0411 %D0%91 %D0%91
В %u0412 %D0%92 %D0%92
Г %u0413 %D0%93 %D0%93
Д %u0414 %D0%94 %D0%94
Е %u0415 %D0%95 %D0%95
Ж %u0416 %D0%96 %D0%96
З %u0417 %D0%97 %D0%97
И %u0418 %D0%98 %D0%98
Й %u0419 %D0%99 %D0%99
К %u041A %D0%9A %D0%9A
Л %u041B %D0%9B %D0%9B
М %u041C %D0%9C %D0%9C
Н %u041D %D0%9D %D0%9D
О %u041E %D0%9E %D0%9E
П %u041F %D0%9F %D0%9F
Р %u0420 %D0%A0 %D0%A0
С %u0421 %D0%A1 %D0%A1
Т %u0422 %D0%A2 %D0%A2
У %u0423 %D0%A3 %D0%A3
Ф %u0424 %D0%A4 %D0%A4
Х %u0425 %D0%A5 %D0%A5
Ц %u0426 %D0%A6 %D0%A6
Ч %u0427 %D0%A7 %D0%A7
Ш %u0428 %D0%A8 %D0%A8
Щ %u0429 %D0%A9 %D0%A9
Ъ %u042A %D0%AA %D0%AA
Ы %u042B %D0%AB %D0%AB
Ь %u042C %D0%AC %D0%AC
Э %u042D %D0%AD %D0%AD
Ю %u042E %D0%AE %D0%AE
Я %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:

chr    escape(chr)   encodeURI(chr)  encodeURIComponent(chr)
≠ %u2260 %E2%89%A0 %E2%89%A0
≡ %u2261 %E2%89%A1 %E2%89%A1
≢ %u2262 %E2%89%A2 %E2%89%A2
≣ %u2263 %E2%89%A3 %E2%89%A3
≤ %u2264 %E2%89%A4 %E2%89%A4
≥ %u2265 %E2%89%A5 %E2%89%A5

(See Mathematical and Special Symbols for more examples.)

简单的来说就是 一个Unicode 编码的两种格式
来自:http://www.javascripter.net/faq/escape-encodeuri-unicode.htm 二、其他方式:
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个字符    return co.sub(restr, desstr)
三。这里提供一个链接,fb,twitter的emoji合集:
https://emojipedia.org/facebook/

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. dede头 名字 和关键字的调用

    <title>{dede:global.cfg_webname/}</title><meta name="description" content=& ...

  2. 查找占用CPU高线程

    1.根据进程号查看线程 ps -mp pid -o THREAD,tid,time 2 把tid值转成16进制 printf "%x\n" tid 3.根据上面获取到的16进制数据 ...

  3. 各种 Java Thread State【转载】

    1,线程状态为“waiting for monitor entry”: 意味着它 在等待进入一个临界区 ,所以它在”Entry Set“队列中等待. 此时线程状态一般都是 Blocked: java. ...

  4. unbound域名解析

    安装unbound服务 # yum install unbound -y 开启服务 linux系统如何查看命令属于哪一个安装包 # yum provides */netstat 安装netstat命令 ...

  5. windows,linux下SVN实现自动更新WEB目录

    通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器 ...

  6. JSON Web Token的使用(转载)

    定义 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 适用场景 1.用于向Web应用传递一些非敏感信息.例如完成加好友.下 ...

  7. OpenGL 画出雷达动态扫描效果(一)

    最终效果如下所示 Demo下载  http://files.cnblogs.com/xd-jinjian/Debug.zip 源代码下载 http://download.csdn.net/detail ...

  8. 对话框(VC_Win32)

    资源描述表中对话框定义 格式: 对话框名 DIALOG[载入特性] X,Y,Width,Height[设置选项] { 对话框控件定义; } 说明: 对话框名称: 标识对话框资源,可为一个字符串也可以为 ...

  9. iOS TTF文件改变字体

    TTF(True Type Font):是一种字库名称 TTF文件:是Apple公司和Microsoft公司共同推出的字体文件格式 使用: 1 获取字体文件 从各种渠道下载字体ttf,网站或从别的ip ...

  10. Spark运行模式概述

    Spark编程模型的回顾 spark编程模型几大要素 RDD的五大特征 Application program的组成 运行流程概述 具体流程(以standalone模式为例) 任务调度 DAGSche ...