热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

16进制es6_ES6对unicode的支持

Chrome内置抓包工具Blockrequests截取长图代码的覆盖率分析MakesitebetterES5只支持\uffff(65535)以内的unicode比如你写\u220

Chrome 内置抓包工具

Block requests

截取长图

代码的覆盖率分析

Make site better

ES5只支持\uffff(65535)以内的unicode

比如你写"\u22000" //在unicode中对应为生僻字:𢀀

但是最后展示为:"∀0"。

结论:Javascript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),Javascript 会认为它们是两个字符。

那么参考下各种字符的unicode区间,其实还是有很多会用到的字符,它们的区间大于0xFFFF的。比如我们常见的emoji表情。这些在ES5中就没办法进行处理了。

ES6的写法

万能写法:{}"\u{22000}"

这种写法比较简便,在正则中也可以使用,前提是要有u标示符, 否则会被识别为正则语法中的花括号"𢀀的蛋".match(/\u{22000}/u) //return ["𢀀"]

"𢀀的蛋".match(/\u{22000}/) //return null

String.prototype.charCodeAt vs String.prototype.codePointAt

前者是ES5的写法,后者是ES6的写法,均由字符返回十进制的unicode编码,区别在于是否支持0xffff以上。"𢀀".charCodeAt() //55368 这个值是错的

"𢀀".codePointAt() //139264 十进制

"𢀀".codePointAt().toString(16) //"22000" 转为16进制的快捷方法

String.fromCharCode vs String.fromCodePoint

前者是ES5的写法,后者是ES6的写法,由unicode编码返回相应的字符串。

需要注意参数默认为十进制String.fromCodePoint(0x22000) //"𢀀"

String.fromCodePoint(22000) //"嗰"

正则表达式的Unicode Property支持

ES5中的正则是不支持Unicode Property的,而ES6可以支持,这样我们可以更方便的用正则包含或排除某些字符(常用的unicode字符属性),比较好用的一个是C属性,表示不对应任何字符的unicode码,可以有效的过滤掉没用的unicode码。

比如这个例子:\uffff是一个不对应任何字符的码点,我们就可以很容易的过滤掉这个非法字符。"\u6211\uffff".replace(/\p{C}/u, ''); //我

Babel能不能兼容?

能。Babel编译器可以转换uncode regex, babel-polyfill可以兼容String.fromCodePoint和String.prototype.codePointAt。

注:String.fromCodePoint和String.prototype.codePointAt属于新的API,所有ES6+中新的API,都需要使用babel-polyfill,可以在项目中引用babel-polyfill,或在编译器中配置babel-plugin-transform-runtime.

参考文章

彩蛋:一些有意思的小bugvar reg = /[\u{ffff}-\u{fffff}]/u

reg.test("😁") //true

var reg = /[\u0030-\uffff]/

reg.test("😁") //true

var reg = /[\u{0030}-\u{ffff}]/u

reg.test("😁") //false

var reg = /[\u4e00-\u9fa5]/

reg.test("😁") //false

不用u,进入特殊字符区间,就会出错,期望是false, 实际是true

var reg = /[\u4e00-\uffff]/

reg.test("\u{fffff}")

var reg= /😁/

reg.test("😁") //true

var reg= /😁{2}/

reg.test("😁😁") //false

var reg= /😁{2}/u

reg.test("😁😁") //true



推荐阅读
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文详细介绍了Python中正则表达式和re模块的使用方法。首先解释了转义符的作用,以及如何在字符串中包含特殊字符。然后介绍了re模块的功能和常用方法。通过学习本文,读者可以掌握正则表达式的基本概念和使用技巧,进一步提高Python编程能力。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • splitjava的简单介绍
    本文目录一览:1、Javasplit方法2、 ... [详细]
  • 开发笔记:Squid代理服务
    本文由编程笔记#小编为大家整理,主要介绍了Squid代理服务相关的知识,希望对你有一定的参考价值。Squid服务基础缓存代理概述 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 这期内容当中小编将会给大家带来有关如何在php表单中使用正则表达式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可 ... [详细]
  • 字面|开辟_一文入门JavaScript
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了一文入门JavaScript相关的知识,希望对你有一定的参考价值。@toc ... [详细]
author-avatar
sunshinena
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有