原文来自:

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. 【Spring学习笔记-5】Spring中的抽象bean以及bean继承

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  2. Java学习——Eclipse下载,java配置,新建,输入输出

    Eclipse下载,java配置:  基本的软件是JDK,它可以编译.运行Java程序,下载地址是:https://www.oracle.com/technetwork/java/javase/dow ...

  3. 学习笔记之Kubernetes

    Kubernetes | Production-Grade Container Orchestration https://kubernetes.io/ Kubernetes is an open-s ...

  4. [UE4]射击和直线追踪

    只有有朝向的组件(如character.Controller等)才能动态获取到朝向,在编辑视图中会有一个箭头表示正前方: 如果是没有朝向的组件(如摄像机),则获取到的朝向永远是固定的

  5. C# AtomicInt

    using System; using System.Threading; /// <summary> /// Provides lock-free atomic read/write u ...

  6. ECCV 2018 | 旷视科技提出GridFace:通过学习局部单应变换实现人脸校正

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕,旷视科技有多篇论文被此 ...

  7. 中国Linux开源镜像站大全

    本文来源:各大开源软件.发行版镜像页面.       请注意这是一个总结,如果您自己搭建了一个小型开源镜像,这里并没有.以下列出的是包含大量不同镜像的站点.       具体配置中,我建议您使用大企业 ...

  8. jQuery更新

    jQuery jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行 ...

  9. Java技术栈

    内容: 1.Java基础(JavaSE) 2.数据结构与算法与设计模式 3.计算机理论知识 4.数据库 5.Java web(JavaEE) 6.消息队列 7.Linux及服务器相关 8.分布式相关 ...

  10. python之列表操作

    1.列表的增操作(四种) append(object):append object to end,directly used on list insert(index,object):insert o ...