ES6中Unicode的改动 正则和字符串的变动 codePointAt

ES6为了应对Unicode扩展导致的码元与码点不一致问题,引入了`codePointAt`方法和正则标志`u`。`codePointAt`允许正确获取字符串中码点的长度,而`u`标志让正则能够按码点匹配,解决了生僻字导致的匹配错误和长度计算不准确的问题。
摘要由CSDN通过智能技术生成

ES6中Unicode的改动

早期,由于储存空间宝贵,Unicode使用16位二进制来储存文字,我们将一个16位的二进制编码叫做一个码元(Code Unit)。
后来由于技术的发展,Unicode对文字编码进行了扩展,将某些文字扩展到了32位(占用两个码元),并且,将某个对应的二进制数字叫做码点(Code Point)。


	//此时就产生了一个问题
	//在这里我写了一个字符串这个字是一个生僻字读ji
	const text = '吉';
	
	//而我在这里用.length的方法来测试字符串的长度
	console.log('字符串长度:', text.length);
	//用正则表达式来检索看看能不能检索到
	console.log('使用正则测试:', /^.$/.text(text));

而结果是
在这里插入图片描述
???
不应该对吧,字符串长度应该为1
正则表达式应该是能检索到字符串的啊,应该是为ture

那是因为现在有些文字要占用两个码元,有的文字占用一个码元,而js在很早之前1999年的时候已经有10年没有更新了一个语言有10年没有更新是多么可怕的一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值