原文来自:

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. bzoj 4927: 第一题

    Description 给定n根直的木棍,要从中选出6根木棍,满足:能用这6根木棍拼 出一个正方形.注意木棍不能弯折.问方案数. 正方形:四条边都相等.四个角都是直角的四边形. Input 第一行一个 ...

  2. sikuli 安装

    1     简介 官方介绍: Sikuli脚本自动化,你在屏幕上看到的任何东西.它使用图像识别,识别和控制GUI组件.这是有用的,当有一个GUI的内部或源代码的访问是不容易的. Sikuli(在墨西哥 ...

  3. [转]SendKeys.Send 方法

    SendKeys.Send 方法 向活动应用程序发送击键. 转载自: https://msdn.microsoft.com/zh-cn/library/system.windows.forms.sen ...

  4. restclient 访问 springmvc java工程接口

    一.tomcat和nginx 配置 /etc/nginx/conf.d/default.conf location /nsx{ proxy_pass http://nsx; proxy_connect ...

  5. REST-assured 2发送文字到接口

    获取token https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT #java package ...

  6. 浅析PHP7新功能及语法变化总结

    标量类型声明 有两种模式: 强制 (默认) 和 严格模式. 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 ...

  7. php如何高效的读取大文件

    通常来说在php读取大文件的时候,我们采用的方法一般是一行行来讲取,而不是一次性把文件全部写入内存中,这样会导致php程序卡死,下面就给大家介绍这样一个例子. 需求:有一个800M的日志文件,大约有5 ...

  8. pip安装包(python安装gevent(win))

    下载: https://www.lfd.uci.edu/~gohlke/pythonlibs/#greenlet greenlet greenlet-0.4.14-cp36-cp36m-win_amd ...

  9. ORA:01745 无效的主机 绑定变量名

    原因是:mybatis中的mapping映射时,sql语句中忘了加逗号,且逗号处有换行

  10. Java技术栈

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